我的理解是,在小表上创建索引可能比成本更高。
例如,在少于100行(甚至1000行?)的表上创建索引是没有意义的。
是否有任何特定行数作为创建索引的阈值?
更新1
我正在调查的越多,我就越能获得相互矛盾的信息。我可能太担心保留IO写操作;因为我的SQL服务器数据库处于HA同步提交模式。
第1点:
这个问题非常关注IO写入性能。对于SQL Server HA同步提交模式等场景,当数据库服务器驻留在跨子网数据中心时,IO写入的成本很高。添加索引会增加昂贵的IO写入成本。
第2点:
Books Online建议:
索引小表可能不是最佳的,因为它可以进行查询 优化器更长,遍历索引搜索数据而不是 执行简单的表扫描。因此,小表上的索引可能 永远不会被使用,但仍必须作为表格中的数据进行维护 变化。
我不确定在只有1行的表中添加索引会有什么好处 - 或者我错了?
答案 0 :(得分:3)
你的理解是错误的。当用于连接较大的表时,小表也会受益于索引。
索引的成本有两个部分,即插入/更新期间的存储空间和处理时间。这一天第一个很便宜所以几乎丢弃了。因此,只有当您拥有包含大量更新的表并且插入应用正确的配置时,您才应该考虑。