联合索引

索引不含查询列可以考虑联合索引

如果我们想读取索引列和非索引列的值,但是不想发生索引回表读,怎么办

如我们想查询id列和name列的值

create index aa on t(id,name)

性能比回表高效

但是联合索引的索引列最多不能超过3列,如果索引列太多,那么索引块势必会多,就会遍历更多的所以块

时间: 2024-11-10 09:49:02

联合索引的相关文章

结合mysql查询优化器对联合索引的探讨

无陈述,直接开讲: babysitter_account表中的联合索引如下(开发小伙伴们自建的联合索引.您发现不妥了吗?): KEY `flag` (`flag`,`user_id`,`account_id`) 过去认为: 1.SELECT account_id,weibo_id,weibo_type FROM babysitter_account WHERE user_id BETWEEN 100 and 10000 AND flag=0; 2.SELECT account_id,weibo_

联合索引优化策略

1:索引类型 1.1 B-tree索引 注: 名叫btree索引,大的方面看,都用的平衡树,但具体的实现上, 各引擎稍有不同, 比如,严格的说,NDB引擎,使用的是T-tree Myisam,innodb中,默认用B-tree索引 但抽象一下---B-tree系统,可理解为”排好序的快速查找结构”. 1.2 hash索引 在memory表里,默认是hash索引, hash的理论查询时间复杂度为O(1) 疑问: 既然hash的查找如此高效,为什么不都用hash索引? 答: 1:hash函数计算后的

SQL优化案例分享--联合索引

下面这个SQL如何优化: desc select count(*) as total from Art_Person a, Art_Works b where a.PersonCode=b.PersonCode; +----+-------------+-------+-------+---------------+------------+---------+---------------------+--------+-------------+ | id | select_type | t

对mysql联合索引中的字段进行合理排序

在MySQL的where条件中,有时会用到很多的条件,通常为了加快速度会把这些字段放到联合索引中,可以更快的提高搜索速度: 但是对联合索引中字段顺序的合理排序,便更能提高速度 例子:select * from table where (groupid=1000) and (userid=500) and (time=140012345) 建立的索引也通常很随性的就按照where条件中字段的顺序建立 ALTER  TABLE  table  ADD  INDEX g_u_time_index(gr

联合索引最左匹配

假设有联合索引 idx1(a,b,c) 下面的SQL可完整用到索引. 1.SELECT ... WHERE b=? AND c=? AND a=?; 2.SELECT ... WHERE b=? AND a=? AND c=?; 3.SELECT ... WHERE a=? AND b IN(?,?) AND c=?; 4.SELECT ... WHERE a=? AND b=? ORDER BY c; 5.SELECT ... WHERE a=? AND b IN(?,?) ORDER BY

【索引】联合索引的基本知识

0.预备 假设我们有表 user (id,name)列 1.联合索引是个什么东西 我们知道,对于表的单列(如id)数据,是可以建立索引的,对于多列(id和name组合,或者,name和id组合),也可以建立索引.联合索引,也称之为组合索引. 先来看单列索引的逻辑结构. 由此得出索引的三个特征:索引有序+高度较低+存储列值 联合索引也满足这三个特征,但这里的逻辑图就不画了,而是以更直观的方式来展现其查找逻辑,这里应注意,联合索引的列有前后,以id列在前.name列在后为例. 建联合索引前的情况 建

mysql联合索引详解

所有的MySQL列类型能被索引.在相关的列上的使用索引是改进SELECT操作性能的最好方法. 一.前缀索引 对于CHAR和VARCHAR列,你可以索引列的前缀.这更快并且比索引整个列需要较少的磁盘空间.在CREATE TABLE语句中索引列前缀的语法看起来像这样: KEY index_name (col_name(length))下面的例子为name列的头10个字符创建一个索引: mysql> CREATE TABLE test (name CHAR(200) NOT NULL,KEY inde

SQL联合索引 与 单一列的索引

SQL联合索引 与 单一列的索引 标签: sqlwebobjectstatistics优化磁盘 2012-06-12 13:46 27992人阅读 评论(1) 收藏 举报  分类: 数据库(94)  转自:http://liqita.iteye.com/blog/1205544 背景:目前WEB的普及太快,很多网站都会因为大流量的数据而发生服务器习惯性死机,一个查询语句只能适用于一定的网络环境.没有优化的查询当遇上大数据量时就不适用了. 联合索引使用结论: 1):查询条件中出现联合索引第一列,或

表建立联合索引

表建立联合索引后,以两个字段为例,如果想查询速度快,where条件中要么带上两个字段,要么带上前面的,如果只有后面的不会变快. 实例:以下联合索引:itemid和clock 这个联合索引 如果where字段查clock的话 是不能走索引的, 所以查询会慢 . 要想查询变快的话,查itemid,或者两个一起查.

mysql 什么时候用单列索引?什么使用用联合索引?

我一个表 students 表,有3个字段 ,id,name,age 我要查询 通过 name 和age,在这两个字段 是创建 联合索引?还是分别在nage和age上创建 单列索引呢? 多个字段查询什么情况下用联合索引 什么时候分别创建单列索引呢? 作者:范孝鹏链接:https://www.zhihu.com/question/40736083/answer/88191544来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 1,首先要确定优化的目标,在什么样的业务场