本篇内容介绍了“mysql数据库max()函数的作用是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

查看表结构:

mysql>showcreatetablecoupon_use_test\G***************************1.row***************************Table:coupon_use_testCreateTable:CREATETABLE`coupon_use_test`(`id`int(11)NOTNULLDEFAULT'0',`user_id`varchar(40)CHARACTERSETutf8COLLATEutf8_binDEFAULTNULL,`coupon_code`varchar(40)CHARACTERSETutf8COLLATEutf8_binNOTNULLDEFAULT'',`status`varchar(2)CHARACTERSETutf8COLLATEutf8_binDEFAULT'00',`use_time`datetimeDEFAULTNULL,`remark1`varchar(200)CHARACTERSETutf8COLLATEutf8_binDEFAULTNULL,`remark2`varchar(200)CHARACTERSETutf8COLLATEutf8_binDEFAULTNULL,`remark3`varchar(200)CHARACTERSETutf8COLLATEutf8_binDEFAULTNULL,`create_time`timestampNOTNULLDEFAULTCURRENT_TIMESTAMP,`create_user_id`varchar(128)CHARACTERSETutf8COLLATEutf8_binDEFAULTNULL,`update_time`timestampNOTNULLDEFAULTCURRENT_TIMESTAMPONUPDATECURRENT_TIMESTAMP)ENGINE=InnoDBDEFAULTCHARSET=utf81rowinset(0.00sec)

测试查询速度:

mysql>selectmax(create_time)fromcoupon_use_test;+---------------------+|max(create_time)|+---------------------+|2016-06-2516:44:25|+---------------------+1rowinset(2.01sec)

查看执行计划:

mysql>explainselectmax(create_time)fromcoupon_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|+----+-------------+-----------------+------------+------+---------------+------+---------+------+---------+----------+-------+1rowinset,1warning(0.00sec)

创建create_time字段索引

mysql>altertablecoupon_use_testaddindexidx_create_time(create_time);QueryOK,0rowsaffected(17.49sec)Records:0Duplicates:0Warnings:0

再次查询:

mysql>selectmax(create_time)fromcoupon_use_test;+---------------------+|max(create_time)|+---------------------+|2016-06-2516:44:25|+---------------------+1rowinset(0.00sec)

查看执行计划:

mysql>explainselectmax(create_time)fromcoupon_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|Selecttablesoptimizedaway|+----+-------------+-------+------------+------+---------------+------+---------+------+------+----------+------------------------------+1rowinset,1warning(0.00sec)

索引是有序的,create_time字段加完索引之后取max(create_time)速度变快。

看到其他优化方法,通过转变SQL查询方式实现

mysql>selectcreate_timefromcoupon_use_testorderbycreate_timedesclimit1;+---------------------+|create_time|+---------------------+|2016-06-2516:44:25|+---------------------+1rowinset(0.00sec)

查看执行计划:

mysql>explainselectcreate_timefromcoupon_use_testorderbycreate_timedesclimit1;+----+-------------+-----------------+------------+-------+---------------+-----------------+---------+------+------+----------+-------------+|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|Usingindex|+----+-------------+-----------------+------------+-------+---------------+-----------------+---------+------+------+----------+-------------+1rowinset,1warning(0.01sec)

“mysql数据库max()函数的作用是什么”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!