我有2个表格:产品和类别.每个类别都有许多产品,一个产品可以属于许多类别.
产品展示
product_id - int primary auto increment
name - unique
etc.
分类
category_id - int primary auto increment
name - unique
etc.
对于多对多关系,我有一张第三张桌子.
产品_类别
product_id -> foreign key: products.product_id
category_id -> foreign key: category.category_id
我的问题是:我应该为product_categories中的product_id和category_id创建索引以进行更快的选择查询吗?如果是,请问什么索引?
谢谢
解决方法:
这取决于哪个查询最频繁.
您可能最终得到三个索引.
>如果您有… WHERE products_categories.product_id = XXX,请在product_id上创建索引.
>与category_id相同
>如果有…,则在category_id和product_id上都创建索引… WHERE products_categories.category_id = XXX AND products_categories.product_id = YYY
但是,请记住following the MySQL manual,(category_id,product_id)上的索引可能与(category_id)上的索引冗余.同样,(product_id,category_id)上的索引可能与(product_id)上的索引冗余.因此,您最终可能会得到两个索引(而不是三个)来满足您所有的频繁查询需求.