我读过,在某些数据库上建立索引(我读到的就是 SQL Server),直到超过一定的行阈值后才会产生太大影响,因为数据库会将整个表 X 保存在内存中。
通常,我计划在 WHERE 和唯一列/更改较少的表上建立索引。在听说了建议的最低限度(大约 10k)后,我想了解更多关于这个想法的信息。如果我知道有些表永远不会通过某个点,这可能会改变我对其中一些表建立索引的方式。
对于像 MySQL MyISAM/INNODB 这样的东西,是否存在索引没有什么价值的点,有哪些方法可以确定这一点?
注意:非常尊重,我并不是在寻找有关构建数据库的建议,例如“无论如何你都应该建立索引”,我只是想了解这个概念,无论它是否正确,如何确定阈值以及类似的信息。
索引的主要用途之一是减少读取的页数。索引本身通常比表小。因此,仅就页面读/写而言,通常需要至少三个数据页才能看到好处,因为使用索引至少需要两个数据页(一个用于索引,一个用于原始数据)。
(实际上,如果索引覆盖查询,则盈亏平衡点为 2。)
表所需的数据页数取决于记录的大小和行数。因此,实际上不可能指定行数阈值。
上述非常基本的解释遗漏了一些事情:
但它给了你一个想法,你可以看到小于 10k 行的表的好处。也就是说,您可以轻松地对数据进行测试,以了解查询如何在相关表上工作。
另外,我强烈建议在所有表上使用主键,并将这些键用于外键关系。主键本身就是一个索引。
| 归档时间: |
|
| 查看次数: |
2872 次 |
| 最近记录: |