前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >索引之单列索引和组合索引

索引之单列索引和组合索引

作者头像
ydymz
发布2018-09-10 16:17:10
1.4K0
发布2018-09-10 16:17:10
举报
文章被收录于专栏:lgp20151222

前几天老大叫我做了下索引优化,故将学到的东西记录下来。

1)单列索引就不多说了,不设限制的唯一索引,值唯一的唯一索引,一个表一个非空的主键索引

2)组合索引

组合索引,多个列组合的索引。重点是理解最左前缀的原则。

最左前缀

若有组合索引(a,b,c),那么根据最左前缀,数据库成立了三个索引(a)(a,b)(a,b,c),

重点:

这里可以看出n个列的组合索引,实际新建的普通

索引是n个,

索引的列数是n(n+1)/2列,即高斯求和

大小是n*a*a.length+(n-1)*b*b.lengtn+....+1*n*n.length。

3)优化

有了上面的重点,那么建立索引的基本要求就有了。

1.索引的大小应该小于数据表的大小

因为,每个数据不一定用的是最大的长度,而且建立索引的时间高于插入数据,实际上通常满足索引的列数小于数据库的列数,就能确保索引的大小应该小于数据表的大小。当然,具体公司具体分析,像淘宝的数据服务器估计为了查询速度,索引大小应该远高于数据表大小。

2.组合索引第一个不应该包含单列索引

原因,重复。(学名组合索引的前导索引/前导列)

3.创建索引时,若一些用于模糊查询的可以只截前面一段,用于查询

优化索引创建时间,索引大小等

4)注意点

1.操作:order by,where,join,查询条件:数据库只对<,<=,=,>,>=,BETWEEN,IN,以及某些时候的LIKE才会使用索引

2.以通配符%和_开头作查询时,MySQL不会使用索引

3.索引不会包含有NULL值的列

4.在索引列上进行数学操作会变成全表查询

5.不用NOT IN和<>操作,想想就明白,这两个操作下的查询效率和全表查询差不多。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-06-11 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1)单列索引就不多说了,不设限制的唯一索引,值唯一的唯一索引,一个表一个非空的主键索引
  • 2)组合索引
    • 最左前缀
    • 3)优化
    • 4)注意点
    相关产品与服务
    云数据库 SQL Server
    腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档