高性能的索引策略

创建高新能的索引策略

(1)独立的列:索引 不能是表达式的一部分,也不能是函数的参数。

eg:mysql>SELECT actor_id from actor where actor_id-1=4;【索引actor_id,正确写法:actor_id=5;】

(2)前缀索引和选择性索引很长的  字符列,--->通常使用  前缀索引。【选择性,尽量保证与  完整列的选择性  相差不大。】

【缺点:Mysql无法用前缀索引  做ORDER BY 和 GROUP BY,也无法做覆盖扫描。】

1.如何找合适的前缀长度:

        ①查看完整列的选择性---SELECT COUNT(DISTINCT  city)/COUNT(*) From sakila.city;

        ②查看各个长度,前缀列的选择性【相近即可用】SELECT COUNT(DISTINCT LEFT(city,3))/COUNT(*) AS sel3,

   ->COUNT(DISTINCT LEFT(city,4))/COUNT(*) AS sel4,

   ->COUNT(DISTINCT LEFT(city,5))/COUNT(*) AS sel5

   From sakila.city;

(3)多列索引:

用途:eg    create index(last_name,first_name,birthday);

①全值匹配:查找Cuba  Hellen 出生于1960-01-12。

②匹配最左前列:查找所有  姓为Cuba的人。

③匹配列前缀:查找所有以  C开头的 姓的人。

④匹配范围值:查找 姓在Allen和Barrymore之间的人。

⑤精确匹配某一列 并 范围匹配另外一列:查找所有姓为 Cuba ,名为K开头的人。

猜你喜欢

转载自blog.csdn.net/qq_36381855/article/details/81127354