Mysql索引创建及其用法

 假如你有一个表,

SQL>CREATETABLEtest_tab(
2idINT,
3nameVARCHAR(10),
4ageINT,
5valVARCHAR(10)
6);

你的业务,有一个查询,是
SELECT*FROMtest_tabWHEREname=一个外部输入的数据

刚开始,数据不多的时候,执行效果还不错。
随着数据量的增加,这个查询,执行起来,越来越慢了。

然后在name上面建立了索引
CREATEINDEXidx_test4_nameONtest_tab(name);
这样,可以加快前面那个查询的速度。

但是,某天,你执行了下面这个SQL,发现速度又慢了
SELECT*FROMtest_tabWHEREage=25
为啥呢?因为age字段上面,没有索引
索引只在name上面有

换句话说,也就是WHERE里面的条件,会自动判断,有没有可用的索引,如果有,该不该用。


多列索引,就是一个索引,包含了2个字段。

例如:
CREATEINDEXidx_test_name_ageONtest_tab(name,age);

那么
SELECT*FROMtest_tab
WHERE
nameLIKE'张%'
ANDage=25
这样的查询,将能够使用上面的索引。

多列索引,还有一个可用的情况就是,某些情况下,可能查询,只访问索引就足够了,不需要再访问表了。例如:

SELECT
AVG(avg)AS平均年龄
FROM
test_tab
WHERE
nameLIKE'张%'

这个时候,name与age都包含在索引里面。查询不需要去检索表中的数据
原文地址:https://www.cnblogs.com/pursol/p/6508328.html