MySQL函数索引有哪些优化方案

  介绍

这篇文章将为大家详细讲解有关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函数索引有哪些优化方案