`

建立索引的几大原则

 
阅读更多

记录下,索引几大原则,防止忘记:

       1.最左前缀匹配原则,非常重要的原则,mysql会一直向右匹配直到遇到范围查询(>、<、between、like)就停止匹配,比如a = 1 and b = 2 and c > 3 and d = 4 如果建立(a,b,c,d)顺序的索引,d是用不到索引的,如果建立(a,b,d,c)的索引则都可以用到,a,b,d的顺序可以任意调整。

       2.=和in可以乱序,比如a = 1 and b = 2 and c = 3 建立(a,b,c)索引可以任意顺序,mysql的查询优化器会帮你优化成索引可以识别的形式

       3.尽量选择区分度高的列作为索引,区分度的公式是count(distinct col)/count(*),表示字段不重复的比例,比例越大我们扫描的记录数越少,唯一键的区分度是1,而一些状态、性别字段可能在大数据面前区分度就是0,那可能有人会问,这个比例有什么经验值吗?使用场景不同,这个值也很难确定,一般需要join的字段我们都要求是0.1以上,即平均1条扫描10条记录

       4.索引列不能参与计算,保持列“干净”,比如from_unixtime(create_time) = ’2014-05-29’就不能使用到索引,原因很简单,b+树中存的都是数据表中的字段值,但进行检索时,需要把所有元素都应用函数才能比较,显然成本太大。所以语句应该写成create_time = unix_timestamp(’2014-05-29’);

5.尽量的扩展索引,不要新建索引。比如表中已经有a的索引,现在要加(a,b)的索引,那么只需要修改原来的索引即可

 

分享到:
评论

相关推荐

    索引的使用原则.pdf

    因此,对于数据量较小的表,可以不考虑建立索引。 6. 避免在经常变动的列上建立索引。因为索引会随数据的变化而更新,这会导致额外的开销。 接下来,我们讨论一下在实际操作中索引的管理和优化: - 定期对索引...

    索引优化原则及Oracle中索引总结

     · 尝试建立索引来帮助特定的查询。检查自己的sql语句,为那些频繁在where子句中出现的字段建立索引。  · where语句中不得不对查询列采用函数查询,如upper函数,好建立相应函数索引;  · 在SQL语句中经常...

    mysql索引最左原则实例代码

    B+树是按照从左到右的顺序建立的,因此,在使用复合索引进行查询时,MySQL会首先根据第一个索引字段进行搜索,然后依次使用后续的字段进行范围限定。 综上所述,MySQL索引最左原则是数据库查询优化的重要知识点之一...

    基于索引的SQL语句查询优化方法.pdf

    5. WHERE子句中常用的字段,尤其是大表的字段,需建立索引。 6. 尽量避免在过长的字段上建立索引。 建立索引可以显著提高查询速度,但过度索引可能导致插入、更新和删除操作的性能下降,因此平衡索引的利弊是关键。...

    郑保卫 - 索引优化策略及实战

    7. 索引的选择性:高选择性的列(即不同值占总值的比例大)更应该建立索引。 三、战略索引设计方法及技术 在设计索引时,可以采用以下方法和技术: 1. 使用单一列索引或组合索引:根据查询的需要决定使用单一列...

    74 再来看看几个最常见和最基本的索引使用规则l.pdf

    在本文中,我们将探讨几个最常见和最基本的索引使用规则,特别关注联合索引的使用,这是多列索引的一种,可以帮助进一步优化数据库的查询性能。 首先,我们需要了解等值匹配规则。当我们在WHERE子句中使用等号进行...

    数据库建立索引的一般依据小结

    对于字段大小的考虑,应优先在小字段上建立索引,避免在大文本字段或超长字段上创建索引。这些字段的索引不仅占用大量存储空间,而且在查询时可能无法有效利用,反而影响性能。 复合索引的建立需要根据具体情况进行...

    MySQL-数据库-索引详解

    ###为经常需要排序、分组、联合操作的字段建立索引 ###为常作为查询条件的字段建立索引 ###限制索引的数目 索引数目不是越多越好,每个索引都占用磁盘空间,索引越多,需要磁盘空间越多。修改表时,对索引的重构...

    mysql 索引失效详解

    4. 经常需要根据范围进行搜索的列上建立索引。 5. 经常需要排序的列上建立索引。 6. 经常使用 WHERE 子句的列上建立索引。 索引长度计算 ------------- 索引长度的计算公式为:`(Character Set:utf8mb4=4,utf8=3,...

    浅谈mysql的索引设计原则以及常见索引的区别

    其次,对于经常需要进行排序、分组和联合操作的字段,如在ORDER BY、GROUP BY、DISTINCT和UNION等操作中出现的字段,应建立索引以避免排序带来的性能损失。 第三,常作为查询条件的字段也需要建立索引。这可以显著...

    MYSQL索引知识

    使用索引时应遵循一定的原则,如避免在频繁更新的列上创建过多索引,对常用于查询的字段建立索引,数据量小的表通常无需索引,以及在区分度高的列上建立索引等。 3. **索引的分类**: - **单列索引**:包括普通...

    Oracle高效SQL语句原则

    建立索引可以大大提高 SQL 语句的执行效率,因为索引可以帮助 Oracle database 快速定位要查询的数据。因此,在编写 SQL 语句时,应该尽可能对查询条件的列建立索引。 2. 尽量不要在 where 条件中对查询列使用函数 ...

    MYSQL索引注意事项及其优化

    1. 普通索引(Index):对指定字段(非主键、外键)建立索引。 2. 唯一索引(Unique Index):特殊的普通索引,索引字段必须唯一。 3. 主键索引(Primary Key Index):数据库的主键。 4. 组合索引(Composite Index...

    SQLSEVER索引和索引调整向导

    * 索引占用一定的物理空间,如果要建立聚簇索引,需要的空间就会更大。 * 当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,这样就降低了数据的维护速度。 因此,在创建索引的时候,应该仔细考虑在...

    合理使用索引技巧

    - 经常需要进行排序或分组(如`GROUP BY`或`ORDER BY`)的列应建立索引,这样在执行这些操作时能减少数据排序的时间。 - 在条件表达式中出现频率高且具有较多不同值的列上创建索引,以减少全表扫描的次数。相反,...

    数据库索引设计和优化

    选择性低的列不适合建立索引。 2. 索引维护:索引需要随着数据的增删改进行维护,因此要考虑操作频率和复杂度。 3. 分区索引:对于大数据量的表,可以通过分区将数据逻辑上分块,减少扫描的数据量,提高查询效率。 4...

    sql索引.docx

    在创建索引时,有几个重要的原则需要遵循。首先,主键和外键的数据列应建立索引,因为它们通常涉及到数据的完整性。经常被查询的列、用于WHERE子句、ORDER BY、GROUP BY和DISTINCT的列也应该建立索引。此外,复合...

    数据库索引.docx

    建立索引时需考虑多个关键因素,比如在查询的WHERE和JOIN子句中经常使用的列。如果表的大小很大,或者数据的分布不均匀,这些都可能影响索引的效率。此外,创建过多索引会消耗大量存储空间,并且在数据更新时会增加...

    数据库索引设计与优化

    1. 针对频繁查询的列创建索引:根据SQL语句的执行计划,找出最常用于查询的列来建立索引。 2. 平衡读写性能:在考虑索引数量时,需要平衡读取速度和写入速度,避免过度索引。 3. 复合索引:对于多条件查询,可以创建...

Global site tag (gtag.js) - Google Analytics