博客
关于我
2020-06-05:索引不适用的条件
阅读量:298 次
发布时间:2019-03-01

本文共 771 字,大约阅读时间需要 2 分钟。

在数据库查询优化中,关于索引的使用仍然是一个值得深入探讨的话题。以下是一些需要注意的事项和优化建议。

首先,在索引列上使用函数会导致索引失效,这种情况需要特别注意。其次,最左前缀法则虽然在某些情况下非常有用,但并不是万能的。在处理索引列时,避免在索引列上执行不等式操作,这样可以有效减少索引失效的概率。对于Null和Not Null类型的字段,查询时需要特别注意,避免因为字段为Null而导致无法利用索引的情况。Like查询时,尽量避免在索引列上使用,否则会产生全表扫描的结果。

在实际应用中,索引的使用需要谨慎考虑以下因素:如果某个字段的唯一性极差,即使这个字段经常作为查询条件也不适合单独创建索引。对于频繁更新的字段,索引的效率会显著降低,因此不建议为这些字段创建索引。另外,如果某个字段在WHERE子句中很少被使用,给它创建索引也没有太大意义。最后,对于记录数量极少的表,索引的作用也会大打折扣。

关于SQL优化,福哥提出的"尽最不范覆 不囊来字哦"这几句话非常值得借鉴。具体来说,它强调了以下几点:尽量使用全值匹配的方式进行查询,遵循最佳左前缀法则。在使用索引时,避免在索引列上执行范围查询或不等式操作。对于覆盖索引的使用,要尽量多地进行,减少对索引的其他操作。对于不等式查询,除非非常必要,否则尽量避免使用。Null和Not Null类型的字段对查询性能有较大的影响,查询时要特别注意。Like查询时,尽量避免在索引列上使用,以免引发全表扫描。Character类型的字段在查询时需要用引号包裹,OR和UNION操作对于性能提升要比单独的OR语句更有效。

总的来说,数据库查询优化需要综合考虑多个因素,既要充分利用索引带来的查询性能优势,又要避免因为索引的使用而导致的额外负担。只有将这些因素结合起来,才能真正实现高效的数据库查询。

转载地址:http://pmmo.baihongyu.com/

你可能感兴趣的文章
Objective-C实现AvlTree树算法(附完整源码)
查看>>
Objective-C实现backtracking Jump Game回溯跳跃游戏算法(附完整源码)
查看>>
Objective-C实现BACKTRACKING 方法查找集合的幂集算法(附完整源码)
查看>>
Objective-C实现bailey borwein plouffe算法(附完整源码)
查看>>
Objective-C实现balanced parentheses平衡括号表达式算法(附完整源码)
查看>>
Objective-C实现base64加密和base64解密算法(附完整源码)
查看>>
Objective-C实现base64加解密(附完整源码)
查看>>
Objective-C实现base64编码 (附完整源码)
查看>>
Objective-C实现base85 编码算法(附完整源码)
查看>>
Objective-C实现basic graphs基本图算法(附完整源码)
查看>>
Objective-C实现BCC校验计算(附完整源码)
查看>>
Objective-C实现bead sort珠排序算法(附完整源码)
查看>>
Objective-C实现BeadSort珠排序算法(附完整源码)
查看>>
Objective-C实现bellman ford贝尔曼福特算法(附完整源码)
查看>>
Objective-C实现bellman-ford贝尔曼-福特算法(附完整源码)
查看>>
Objective-C实现bellman-ford贝尔曼-福特算法(附完整源码)
查看>>
Objective-C实现bellmanFord贝尔曼-福特算法(附完整源码)
查看>>
Objective-C实现BellmanFord贝尔曼-福特算法(附完整源码)
查看>>
Objective-C实现bezier curve贝塞尔曲线算法(附完整源码)
查看>>
Objective-C实现bfs 最短路径算法(附完整源码)
查看>>