介绍
这篇文章将为大家详细讲解有关MySQL函数索引有哪些优化方案,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。
<强> 1,MySQL5.7 强>
MySQL5.7版本中不支持函数索引,因此遇到函数索引的时候需要进行修改,否则即使查询的字段上有索引,执行时也无法使用索引而进行全表扫描,数据量大的表查询时间会比较长。具体案例如下:
<强> 1.1创建测试表及数据强>
mysql>使用testdb; 数据库修改 mysql>创建表tb_function (int id主键auto_increment名字varchar (100), create_time datetime); 查询好,0行影响(0.01秒) mysql>插入tb_function(名称、creatE_time)值(& # 39;anniuadaOAIFAPUHIA& # 39; & # 39; 2020-07-01 12:00:00& # 39;); 查询好了,1行影响(0.02秒) mysql>插入tb_function(名称、creatE_time)值(& # 39;CWQSsar3qcssg& # 39; & # 39; 2020-07-01 15:00:00& # 39;); 查询好了,1行影响(0.01秒) mysql>插入tb_function(名称、creatE_time)值(& # 39;vxfqrt2adafz& # 39; & # 39; 2020-07-01 21:30:00& # 39;); 查询好了,1行影响(0.01秒) mysql>插入tb_function(名称、creatE_time)值(& # 39;etxzwrwbdhegqgaheqhag& # 39; & # 39; 2020-07-02 01:30:00& # 39;); 查询好了,1行影响(0.01秒) mysql>插入tb_function(名称、creatE_time)值(& # 39;awrs433fsgvsfwtwg& # 39; & # 39; 2020-07-02 03:30:00& # 39;); 查询好了,1行影响(0.00秒) mysql>插入tb_function(名称、creatE_time)值(& # 39;awrs433fsgvsfwtwg& # 39; & # 39; 2020-07-02 07:32:00& # 39;); 查询好了,1行影响(0.00秒) mysql>插入tb_function(名称、creatE_time)值(& # 39;awrs433fsgvsfwtwg& # 39; & # 39; 2020-07-02 10:32:00& # 39;); 查询好了,1行影响(0.00秒) mysql>插入tb_function(名称、creatE_time)值(& # 39;tuilklmdadq& # 39; & # 39; 2020-07-02 15:32:00& # 39;); 查询好了,1行影响(0.00秒) mysql>插入tb_function(名称、creatE_time)值(& # 39;wesv2wqdshehq& # 39; & # 39; 2020-07-02 20:32:00& # 39;); 查询好了,1行影响(0.00秒) mysql>插入tb_function(名称、creatE_time)值(& # 39;89 yoijnlkwr1& # 39;, & # 39; 2020-07-03 02:56:00& # 39;); 查询好了,1行影响(0.00秒) mysql>插入tb_function(名称、creatE_time)值(& # 39;olj nsaaq& # 39;, & # 39; 2020-07-03 08:41:00& # 39;); 查询好了,1行影响(0.01秒) mysql>插入tb_function(名称、creatE_time)值(& # 39;ygo jkdsaq& # 39;, & # 39; 2020-07-03 16:20:00& # 39;); 查询好了,1行影响(0.01秒) mysql>从tb_function select *; + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - + | | id名称| create_time | + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - + | 1 | anniuadaOAIFAPUHIA | 2020-07-01 12:00:00 | | 2 | CWQSsar3qcssg | 2020-07-01 15:00:00 | | 3 | vxfqrt2adafz | 2020-07-01 21:30:00 | | 4 | etxzwrwbdhegqgaheqhag | 2020-07-02 01:30:00 | | 5 | awrs433fsgvsfwtwg | 2020-07-02 03:30:00 | | 6 | awrs433fsgvsfwtwg | 2020-07-02 07:32:00 | | | 7 awrs433fsgvsfwtwg | 2020-07-02 10:32:00 | | | 8 tuilklmdadq | 2020-07-02 15:32:00 | 9 | | wesv2wqdshehq | 2020-07-02 20:32:00 | | | 89 yoijnlkwr1 | 2020-07-03 02:56:00 | | | 11 olj; nsaaq | 2020-07-03 08:41:00 | | | 12 ygo; jkdsaq | 2020-07-03 16:20:00 | + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - + 12行集(0.00秒)
<强> 1.2创建索引强>
在create_time字段上创建索引
mysql>alter table tb_function添加关键idx_create_time (create_time); 查询好,0行影响(0.13秒) 记录:0副本:0警告:0
<强> 1.3按时间查询强>
查询创建时间是2020-07-01那天的所有记录
mysql>select *从tb_function日期(create_time)=& # 39; 2020 - 07 - 01 & # 39;; + - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - + | | id名称| create_time | + - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - + | 1 | anniuadaOAIFAPUHIA | 2020-07-01 12:00:00 | | 2 | CWQSsar3qcssg | 2020-07-01 15:00:00 | | 3 | vxfqrt2adafz | 2020-07-01 21:30:00 | + - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - + 3行集(0.00秒)
执行计划如下:
mysql>解释选择*从tb_function日期(create_time)=& # 39; 2020 - 07 - 01 & # 39;; + - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - + | | id select_type | | | |表分区类型possible_keys关键| | key_len | ref额外过滤| | | |行 + - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - + | 1 |简单| tb_function零| | |所有空零零零12 | | | | | | 100.00 |使用 + - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - + 1行集,警告(0.00秒)MySQL函数索引有哪些优化方案