来源:markus-winand · 原文
这组内容我会特别当成“知识除锈剂”来看。很多数据库性能讨论之所以越聊越乱,不是缺技术术语,而是错误直觉已经先一步占住了脑子。
这部分在做什么
这一组内容不是增加新技巧,而是在清除错误直觉。它的价值在于:很多数据库性能问题之所以反复出现,不是因为知识太少,而是因为错误经验太牢固。
被反驳的几类常见迷思
- 索引会“退化”所以要定期重建:多数情况下这是把慢查询误诊为索引损坏;
- 最左边必须放选择性最高的列:真正关键是等值 / 范围条件如何影响扫描边界;
- 动态 SQL 一定慢:需要区分解析成本、执行计划缓存和参数化;
NULL不能被索引:这在不同数据库里并不是绝对命题。
为什么这组内容重要
如果不先清理这些误区,就很容易在错误方向上努力:例如反复 rebuild 索引、迷信“高选择性左置”、或者把全文检索问题继续塞给 LIKE 和普通 B-tree。
我的吸收
这部分很像整本书的“防错层”。它不只是告诉我该做什么,更重要的是告诉我:哪些看似合理的性能经验,其实会把调优带偏。 我很喜欢把这种内容保留在图谱里,因为它们能防止人带着错误语言继续学习。
相关页面:use-the-index-luke · sql-indexing · query-shape-and-index-usage · b-tree-indexes