Ali*_*ice 2 sql sql-server indexing
我需要帮助了解如何创建索引.我有一张看起来像这样的桌子
我的查询如下所示:
SELECT *
FROM table1
WHERE name = 'sam'
Run Code Online (Sandbox Code Playgroud)
如果查询具有按语句排序怎么办?
SELECT *
FROM table1
WHERE name = 'sam'
ORDER BY id DESC
Run Code Online (Sandbox Code Playgroud)如果我在where语句中有2个参数怎么办?
SELECT *
FROM table1
WHERE name = 'sam'
AND age > 12
Run Code Online (Sandbox Code Playgroud)使用包含列创建索引的正确方法?通过Management Studio/Toad/etc或SQL(文档):
CREATE INDEX idx_table_1 ON db.table_1 (name) INCLUDE (id)
Run Code Online (Sandbox Code Playgroud)
ORDER BY该ORDER BY程序可使用索引,如果优化认为合适的方式(由表统计和查询确定).您可以INCLUDE通过查看查询成本来测试复合索引或带有列的索引是否最佳.
如果id是群集密钥(虽然不总是主键),我可能不会包含该列...
与上面相同 - 您需要测试哪种方法最适合您的查询.可能是复合,包含或单独的索引.
但请记住:
我强烈建议阅读金伯利特里普的" 引爆点 ",以便更好地理解指数决策和影响.