假設(shè)我有2個表格,產(chǎn)品和產(chǎn)品類別。兩個表在CategoryId上都有關(guān)系。這就是查詢。SELECT p.ProductId, p.Name, c.CategoryId, c.Name AS CategoryFROM Products pINNER JOIN ProductCategories c ON p.CategoryId = c.CategoryIdWHERE c.CategoryId = 1;當我創(chuàng)建執(zhí)行計劃時,表ProductCategories會執(zhí)行群集索引查找,這與預(yù)期的一樣。但是對于表Products,它執(zhí)行集群索引掃描,這使我感到懷疑。為什么FK不能幫助提高查詢性能?因此,我必須在Products.CategoryId上創(chuàng)建索引。當我再次創(chuàng)建執(zhí)行計劃時,兩個表都執(zhí)行索引查找。并且估計的子樹成本大大降低了。我的問題是:除了FK有助于關(guān)系約束之外,它還有其他用途嗎?它會提高查詢性能嗎?是否應(yīng)該在所有表的所有FK列(如Products.CategoryId)上創(chuàng)建索引?
外鍵是否可以提高查詢性能?
慕妹3146593
2019-12-17 10:53:22