【发布时间】:2017-10-19 21:32:03
【问题描述】:
假设我有两个表,items 和 stores,主键分别为 item_id 和 store_id。由于这里存在多对多关系,因此我还有一个中间表items_stores,其中包含item_id 和store_id 列。因此,我可以执行两种主要类型的查询:(A) 查找商店中的所有商品,以及 (B) 查找拥有商品的所有商店。
到目前为止,一切都很好。现在我想在items_stores 上放置一个或多个索引来加快我的查询速度。考虑到这些类型的查询,我应该创建两个单独的单列索引(item_id 和 store_id),还是创建一个或多个多列索引?我说的更多是因为我知道 SQL 服务器索引中的列是从左到右访问的,因此可能同时存在 <item_id, store_id> 和 <store_id, item_id>。
【问题讨论】:
-
我可以给你一条鱼,但你应该学会钓鱼。检查这个:MySQL 索引TIPS
-
您认为您的任何查询比其他查询更常用吗?或者关于所需性能改进的重要性顺序?通常在这些情况下,我选择 (A,B) + (B) 或 (B,A) + (A) 但这完全取决于你的感受
-
@JuanCarlosOropeza 该链接适用于 MySQL,此问题已标记为 Sql-Server。
-
本质上,这完全取决于数据的样子以及您将要运行的查询。例如...
store_id, item_id组合是否唯一(例如,每个商店只能有一个 item_id)或者该表中是否有其他一些唯一组合? store_id 是否比 item_id 更具选择性?您是否会运行更多查询以查找商店中有哪些商品或哪些商店有商品(或两者大致相同)? -
@SqlZim 索引技术几乎相同。
标签: sql sql-server database-indexes