高性能的索引策略

创建高新能的索引策略

(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开头的人。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值