mysql索引之五:多列索引
摘要:索引的三星原则 1.索引将相关的记录放到一起,则获得一星 2.如果索引中的数据顺序和查找中的排列顺序一致则获得二星 3.如果索引中的列包含了查询中的需要的全部列则获得三星 多列索引 1.1、多个单列索引 很多人对多列索引的理解都不够。一个常见的错误就是,为每个列建立独立的索引,或者按照错误的顺序创建
阅读全文
posted @
2016-03-05 14:07
duanxz
阅读(11413)
推荐(0) 编辑
mysql索引之四:复合索引之最左前缀原理,索引选择性,索引优化策略之前缀索引
摘要:高效使用索引的首要条件是知道什么样的查询会使用到索引,这个问题和B+Tree中的“最左前缀原理”有关,下面通过例子说明最左前缀原理。 一、最左前缀索引 这里先说一下联合索引的概念。MySQL中的索引可以以一定顺序引用多个列,这种索引叫做复合(联合)索引,一般的,一个联合索引是一个有序元组<a1, a
阅读全文
posted @
2016-03-05 14:06
duanxz
阅读(9668)
推荐(4) 编辑
mysql索引之三:索引使用注意规则(索引失效--存在索引但不使用索引)*
摘要:使用索引时,有以下一些技巧和注意事项: (1)越小的数据类型通常更好:越小的数据类型通常在磁盘、内存和CPU缓存中都需要更少的空间,处理起来更快。(2)简单的数据类型更好:整型数据比起字符,处理开销更小,因为字符串的比较更复杂。在MySQL中,应该用内置的日期和时间数据类型,而不是用字符串来存储时间
阅读全文
posted @
2016-03-05 13:51
duanxz
阅读(22667)
推荐(0) 编辑
mysql索引之一:索引基础(B-Tree索引、哈希索引、聚簇索引、全文(Full-text)索引区别)(唯一索引、最左前缀索引、前缀索引、多列索引)
摘要:没有索引时mysql是如何查询到数据的 索引对查询的速度有着至关重要的影响,理解索引也是进行数据库性能调优的起点。考虑如下情况,假设数据库中一个表有10^6条记录,DBMS的页面大小为4K,并存储100条记录。如果没有索引,查询将对整个表进行扫描,最坏的情况下,如果所有数据页都不在内存,需要读取10
阅读全文
posted @
2016-01-24 00:18
duanxz
阅读(10555)
推荐(8) 编辑
mysql实战优化之四:mysql索引优化
摘要:0、 使用SQL提示 用户可以使用use index、ignore index、force index等SQL提示来进行选择SQL的执行计划。 1、支持多种过滤条件 2、避免多个范围条件 应尽量避免在 where 子句中使用!=或<>操作符,可以用in、between and代替,否则将引擎放弃使用
阅读全文
posted @
2016-01-20 17:00
duanxz
阅读(1072)
推荐(0) 编辑
mysql实战优化之六:Order by优化 sql优化、索引优化
摘要:在MySQL中的ORDER BY有两种排序实现方式: 1、利用有序索引获取有序数据 2、文件排序 在使用explain分析查询的时候,利用有序索引获取有序数据显示Using index。而文件排序显示Using filesort。 1.利用有序索引获取有序数据 取出满足过滤条件作为排序条件的字段,以
阅读全文
posted @
2016-01-20 14:28
duanxz
阅读(1673)
推荐(0) 编辑
mysql索引之二:数据结构及算法原理
摘要:摘要 本文以MySQL数据库为研究对象,讨论与数据库索引相关的一些话题。特别需要说明的是,MySQL支持诸多存储引擎,而各种存储引擎对索引的支持也各不相同,因此MySQL数据库支持多种索引类型,如BTree索引,哈希索引,全文索引等等。为了避免混乱,本文将只关注于BTree索引,因为这是平常使用My
阅读全文
posted @
2016-01-06 20:16
duanxz
阅读(578)
推荐(0) 编辑
mysql索引之六:mysql高效索引之覆盖索引
摘要:概念 如果索引包含所有满足查询需要的数据的索引成为覆盖索引(Covering Index),也就是平时所说的不需要回表操作 判断标准 使用explain,可以通过输出的extra列来判断,对于一个索引覆盖查询,显示为using index,MySQL查询优化器在执行查询前会决定是否有索引覆盖查询 注
阅读全文
posted @
2016-01-05 20:54
duanxz
阅读(1177)
推荐(0) 编辑
mysql 索引最左原则原理
摘要:索引本质是一棵B+Tree,联合索引(col1, col2,col3)也是。 其非叶子节点存储的是第一个关键字的索引,而叶节点存储的则是三个关键字col1、col2、col3三个关键字的数据,且按照col1、col2、col3的顺序进行排序。 (图以innodb引擎为例,对应地址指的是数据记录的地址
阅读全文
posted @
2014-11-26 14:04
duanxz
阅读(2711)
推荐(0) 编辑
mysql索引之七:组合索引中选择合适的索引列顺序
摘要:组合索引(concatenated index):由多个列构成的索引,如create index idx_emp on emp(col1, col2, col3, ……),则我们称idx_emp索引为组合索引。 在组合索引中有一个重要的概念:引导列(leading column),在上面的例子中,c
阅读全文
posted @
2014-02-24 16:51
duanxz
阅读(3949)
推荐(0) 编辑
mysql索引之八:myisam压缩(前缀压缩)索引
摘要:myisam使用前缀压缩来减少索引的大小,从而让更多的索引可以放入内存中,默认只压缩字符串,但通过参数配置也可以对整数做压缩,myisam压缩每个索引块的方法是,先完全保存索引块中的第一个值,然后将其他值和第一个值进行比较得到相同前缀的字节数(长度)和剩余的不同后缀部分(即把相同部分去掉),把这部分
阅读全文
posted @
2013-12-17 11:21
duanxz
阅读(1064)
推荐(0) 编辑
mysql索引之九:重复索引和冗余索引,索引和锁
摘要:索引的创建对数据库的查询性能有很好的优化,但是不恰当的索引使用也会给数据库带来性能上的影响。 一、重复索引和冗余索引 SQL索引创建需要注意的情况: mysql允许在相同列上创建多个索引,无论是有意还是无意,mysql需要单独维护重复的索引,并且优化器在优化查询的时候也需要逐个地进行考虑,这会影响性
阅读全文
posted @
2012-12-03 17:26
duanxz
阅读(5656)
推荐(0) 编辑
mysql索引之十:Mysql 索引案例学习
摘要:理解索引最好的办法是结合示例,所以这里准备了一个索引的案例。 假设要设计一个在线约会网站,用户信息表有很多列,包裹国家,地区,城市,性别,眼睛颜色,等等。完整必须支持上面这些特征的各种组合来搜索用户,还不行一些根据用户的最后在线时间,其他会员对用户的屏风等对用户进行排序并对结果进行限制。如何世界索引
阅读全文
posted @
2012-11-26 13:15
duanxz
阅读(608)
推荐(0) 编辑