【发布时间】:2015-03-03 17:11:46
【问题描述】:
我了解需要多列索引,并且索引顺序在请求中很重要,例如
SELECT product_id
FROM order_detail
WHERE order_id in (1, 2, 3)
但是,当WHERE 子句中没有值时,我无法弄清楚多列索引和索引顺序的必要性。
-
我相信只有在 WHERE 子句中指定了一个值时才使用多列索引(我可能错了)。因此,为了“优化”表 order_detail 和下面的请求,我应该在 product_id 和 order_id 上创建一个多列索引 还是应该创建两个独立的索引,一个在 order_id 上,一个在 product_id 上:
SELECT O.order_id, P.product_name FROM order_detail OD, order O, product P WHERE OD.order_id = O.order_id AND P.product_id = OD.product_id 如果在
WHERE子句中的两列上进行搜索时仍然需要多列索引,即使其中没有值,那么给多列索引的正确顺序是什么? 关于上面 order_detail 表的示例,我应该使用 (order_id, product_id) 还是应该使用 (product_id, order_id)?当WHERE子句中没有值时,顺序是否重要?
非常感谢您的帮助。
【问题讨论】:
标签: mysql