mysql索引
cwjokaka
GitHub: https://github.com/cwjokaka
展开
-
【mysql索引】之多列索引
第零步:简单说一说多列索引并不是指建立多个单列索引,而是指在多个字段建立一个索引。在多个列上建立独立的单列索引大部分情况下并不能提高MySQL的查询性能,MySQL在5.0之后推出了索引合并策略(index merge),一定程度上可以使用多个单列索引来定位指定的行,但实际上更多时候说明了表上的索引建的很糟糕:1.当数据库服务器对多个单列索引做相交操作(原创 2018-01-22 14:19:29 · 1026 阅读 · 0 评论 -
【mysql索引】之使用索引扫描做排序
前言今天看了《高性能MySQL》的索引扫描做排序章节,并且亲身实践了一下,发现有些结果与原书不一样,个人猜测是MySQL版本不一样造成的,下面分享一下我个人的笔记。简介MySQL 有两种方式生成有序结果:通过排序操作或者按索引顺序扫描。如果EXPLAIN出来type列的值为index,则说明MySQL使用索引扫描来做排序。(这句有疑问,很多情况下都type都不是index,原创 2018-01-25 17:26:19 · 649 阅读 · 0 评论 -
【mysql索引】之覆盖索引
今天参考了《高性能MySQL》与几篇博文,总结一下我个人的对覆盖索引的理解。首先,覆盖索引并不是一种新的数据结构,它的意思是在查询的时候,利用到的索引已经完全包含需要查询字段的情况,在这种情况下,查询结果直接就是索引的值,并不需要再利用索引回表查询了。继续拿sakila数据库(MySQL安装好后自带的一个demo数据库)来举例,比如EXPLAIN SELECT ac原创 2018-01-24 18:08:20 · 244 阅读 · 0 评论 -
【mysql索引】之前缀索引
第零步:简单说一说有时候需要索引很长的字符(例如BLOB,TEXT,或者很长的VARCHAR),这样会使得索引又大又慢。改良方法有:1.改用哈希索引(这里不讲)。2.使用字符串的前几个字符作为索引(即前缀索引)。下面具体主要说第2种方法,主要思路就是选择足够长的前缀以保证较高的选择性,同时又不能太长(造成空间浪费)。所谓选择性,是指不重复的索引数量除以总记录数,范围是(0,1],唯一索引之所以查询原创 2018-01-19 14:54:08 · 9870 阅读 · 4 评论