index索引入门笔记
来源:互联网 发布:男性保健药品 知乎 编辑:程序博客网 时间:2024/05/29 07:49
索引入门笔记
不同的存储引擎支持不同的索引模式对于任何DBMS,索引都是进行优化的最主要的因素。对于少量的数据,没有合适的索引影响不是很大,但是,当随着数据量的增加,性能
会急剧下降。如果对多列进行索引(组合索引),列的顺序非常重要,MySQL仅能对索引最左边的前缀进行有效的查找。
例如:假设存在组合索引it1c1c2(c1,c2),查询语句select * from t1 where c1=1 and c2=2能够使用该索引。查询语句select * from t1 where c1=1也能够使用该索引。但是,查询
语句select * from t1 where c2=2不能够使用该索引,因为没有组合索引的引导列,即,要想使用c2列进行查找,必需出现c1等于某值。在数据库中,索引的含义与日常意义上
的“索引”一词并无多大区别(想想小时候查字典),它是用于提高数据库表数据访问速度的数据库对象。当然,众所周知,虽然索引可以提高查询速度,但是它们也会导致数据库系统更新数据的性能下降,因为大部分数据更新需要同时更新索引。
使用B-tree索引有以下一些限制:
(1) 查询必须从索引的最左边的列开始。关于这点已经提了很多遍了。例如你不能利用索引查找在某一天出生的人。
(2) 不能跳过某一索引列。例如,你不能利用索引查找last name为Smith且出生于某一天的人。
(3) 存储引擎不能使用索引中范围条件右边的列。例如,如果你的查询语句为WHERE last_name="Smith" AND first_name LIKE 'J%' AND dob='1976-12-23',则该查询只会使
用索引中的前两列,因为LIKE是范围查询。
Hash索引有以下一些限制:
(1)由于索引仅包含hash code和记录指针,所以,MySQL不能通过使用索引避免读取记录。但是访问内存中的记录是非常迅速的,不会对性造成太大的影响。
(2)不能使用hash索引排序。
(3)Hash索引不支持键的部分匹配,因为是通过整个索引值来计算hash值的。
(4)Hash索引只支持等值比较,例如使用=,IN( )和<=>。对于WHERE price>100并不能加速查询。
- index索引入门笔记
- Oracle笔记 之 索引(index)
- Oracle笔记 之 索引(index)
- 索引 Index
- 索引 index
- 索引 (Index)
- 索引(index)
- 索引 index
- 索引(index)
- 索引index
- 索引index
- 索引 index
- 索引INDEX
- index索引
- 索引 index
- Lucene Inverted index(倒排索引)原来快速入门
- Lucene Inverted index(倒排索引)原来快速入门
- Oracle编程艺术学习笔记-位图索引(bitmap index)
- 漫谈C++11多线程内存模型v
- 问题记录
- Android Service两种启动方式
- 导出表格Util
- 背包问题V2
- index索引入门笔记
- 北岛的《回答》是回答 更是提问
- mysql在指定的一个字段后面添加一个字段
- Go 协程
- Spring Cloud构建微服务架构:服务消费(Feign)【Dalston版】
- java运行时不跑主函数
- JavaWeb项目缓存从 ehcache 切换到 redis
- Spark SQL之案例实战(四)
- 推荐几种靠谱的离职原因回答策略