查看表结构:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
mysql> show
create
table
coupon_use_test \G
*************************** 1. row ***************************
Table
: coupon_use_test
Create
Table
:
CREATE
TABLE
`coupon_use_test` (
`id`
int
(11)
NOT
NULL
DEFAULT
'0'
,
`user_id`
varchar
(40)
CHARACTER
SET
utf8
COLLATE
utf8_bin
DEFAULT
NULL
,
`coupon_code`
varchar
(40)
CHARACTER
SET
utf8
COLLATE
utf8_bin
NOT
NULL
DEFAULT
''
,
`status`
varchar
(2)
CHARACTER
SET
utf8
COLLATE
utf8_bin
DEFAULT
'00'
,
`use_time` datetime
DEFAULT
NULL
,
`remark1`
varchar
(200)
CHARACTER
SET
utf8
COLLATE
utf8_bin
DEFAULT
NULL
,
`remark2`
varchar
(200)
CHARACTER
SET
utf8
COLLATE
utf8_bin
DEFAULT
NULL
,
`remark3`
varchar
(200)
CHARACTER
SET
utf8
COLLATE
utf8_bin
DEFAULT
NULL
,
`create_time`
timestamp
NOT
NULL
DEFAULT
CURRENT_TIMESTAMP
,
`create_user_id`
varchar
(128)
CHARACTER
SET
utf8
COLLATE
utf8_bin
DEFAULT
NULL
,
`update_time`
timestamp
NOT
NULL
DEFAULT
CURRENT_TIMESTAMP
ON
UPDATE
CURRENT_TIMESTAMP
) ENGINE=InnoDB
DEFAULT
CHARSET=utf8
1 row
in
set
(0.00 sec)
|
测试查询速度:
1
2
3
4
5
6
7
|
mysql>
select
max
(create_time)
from
coupon_use_test;
+
---------------------+
|
max
(create_time) |
+
---------------------+
| 2016-06-25 16:44:25 |
+
---------------------+
1 row
in
set
(2.01 sec)
|
查看执行计划:
1
2
3
4
5
6
7
|
mysql> explain
select
max
(create_time)
from
coupon_use_test;
+
----+-------------+-----------------+------------+------+---------------+------+---------+------+---------+----------+-------+
| id | select_type |
table
| partitions | type | possible_keys |
key
| key_len | ref |
rows
| filtered | Extra |
+
----+-------------+-----------------+------------+------+---------------+------+---------+------+---------+----------+-------+
| 1 | SIMPLE | coupon_use_test |
NULL
|
ALL
|
NULL
|
NULL
|
NULL
|
NULL
| 1706101 | 100.00 |
NULL
|
+
----+-------------+-----------------+------------+------+---------------+------+---------+------+---------+----------+-------+
1 row
in
set
, 1 warning (0.00 sec)
|
创建create_time字段索引
1
2
3
|
mysql>
alter
table
coupon_use_test
add
index
idx_create_time(create_time);
Query OK, 0
rows
affected (17.49 sec)
Records: 0 Duplicates: 0 Warnings: 0
|
再次查询:
1
2
3
4
5
6
7
|
mysql>
select
max
(create_time)
from
coupon_use_test;
+
---------------------+
|
max
(create_time) |
+
---------------------+
| 2016-06-25 16:44:25 |
+
---------------------+
1 row
in
set
(0.00 sec)
|
查看执行计划:
1
2
3
4
5
6
7
|
mysql> explain
select
max
(create_time)
from
coupon_use_test;
+
----+-------------+-------+------------+------+---------------+------+---------+------+------+----------+------------------------------+
| id | select_type |
table
| partitions | type | possible_keys |
key
| key_len | ref |
rows
| filtered | Extra |
+
----+-------------+-------+------------+------+---------------+------+---------+------+------+----------+------------------------------+
| 1 | SIMPLE |
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
Select
tables optimized away |
+
----+-------------+-------+------------+------+---------------+------+---------+------+------+----------+------------------------------+
1 row
in
set
, 1 warning (0.00 sec)
|
索引是有序的,create_time字段加完索引之后取max(create_time)速度变快。
看到其他优化方法,通过转变SQL查询方式实现
1
2
3
4
5
6
7
|
mysql>
select
create_time
from
coupon_use_test
order
by
create_time
desc
limit 1;
+
---------------------+
| create_time |
+
---------------------+
| 2016-06-25 16:44:25 |
+
---------------------+
1 row
in
set
(0.00 sec)
|
查看执行计划:
郑州同济医院:http://jbk.39.net/yiyuanzaixian/zztjyy/
1
2
3
4
5
6
7
|
mysql> explain
select
create_time
from
coupon_use_test
order
by
create_time
desc
limit 1;
+
----+-------------+-----------------+------------+-------+---------------+-----------------+---------+------+------+----------+-------------+
| id | select_type |
table
| partitions | type | possible_keys |
key
| key_len | ref |
rows
| filtered | Extra |
+
----+-------------+-----------------+------------+-------+---------------+-----------------+---------+------+------+----------+-------------+
| 1 | SIMPLE | coupon_use_test |
NULL
|
index
|
NULL
| idx_create_time | 4 |
NULL
| 1 | 100.00 | Using
index
|
+
----+-------------+-----------------+------------+-------+---------------+-----------------+---------+------+------+----------+-------------+
1 row
in
set
, 1 warning (0.01 sec)
|