• MySQL索引的使用


    摘要:MySQL索引通常会提高查询的效率,但不恰当的使用会为数据库的内存和性能带来影响。

    1.不要在列上使用函数或者运算,因为会导致全表扫描。

    select * from news where year(time)>2017

    可以改造为select * from news where publish_time < '2017-01-01'

    2.尽量避免使用!=或者not in 或者<>,会导致索引失效

    3.尽量避免使用or来连接。

    4.多个单列索引

    MySQL只能使用一个索引,会从多个索引中选择一个,如果创建多个单列索引,只能使用其中的一个,推荐使用复合索引。

    5.复合索引的最左前缀

    复合索引遵守“最左前缀”原则,即在查询条件中使用了复合索引的第一个字段,索引才会被使用。因此,在复合索引中索引列的顺序至关重要。如果不是按照索引的最左列开始查找,则无法使用索引。

    select * from news where news_month = 1

    此时,无法使用 new_idex(news_year, news_month) 索引,因为遵守“最左前缀”原则,在查询条件中没有使用复合索引的第一个字段,索引是不会被使用的。

    6.范围查询会导致复合索引的右边失效

    查询中的某个列有范围查询,则其右边所有列都无法使用索引优化查找。

    这个时候,我们应该避免采用范围查询,采用一些数据库结构来实现去掉范围查询。

    7.索引不会包含有null值的列

    列中包含null值将不会被包含在索引中。在数据库设计时,应该避免列使用null

    8.隐式转换会导致索引失效

    9.like %value% 会导致全表扫描

  • 相关阅读:
    一份感动到哭的成绩单……
    永远不要、不要、不要、不要放弃
    FusionChart 保存图片 小强斋
    JfreeChart的使用 小强斋
    JFreeChart中文API 小强斋
    FusionChart 小强斋
    面试题>旋转字符串 小强斋
    Dom4j 小强斋
    FusionChart 保存图片 小强斋
    JFreeChart中文API 小强斋
  • 原文地址:https://www.cnblogs.com/wuyuetian/p/8690026.html
Copyright © 2020-2023  润新知