哪些索引在此查询中有用?

时间:2014-08-21 22:34:30

标签: mysql indexing date-comparison

我正在对两个表之间的大量记录进行一些查询。仅表格键是自动增量ID。

    SELECT 
    discounts.id,
    vendor_number,
    discounts.sku,
    deal_number,
    deal_start_date,
    deal_end_date,
    sales.cost,
    sales.quantity,
    sales.invoice_date
FROM
    discounts
        INNER JOIN
    sales ON discounts.sku = sales.sku
WHERE
    invoice_date >= deal_start_date
        AND invoice_date <= deal_end_date

查询的工作是我确定的日期比较,但我不确定要设置哪种索引以帮助此查询更好地执行。

1 个答案:

答案 0 :(得分:1)

where条件实际上是联接的一部分(假设deal_start_datedeal_end_date来自discounts表。如果是这样,这只是join优化。最佳索引将首先使用joinsku中使用的列(因为相等)。所以,我认为这些都是很好的指标:

sales(sku, invoice_date)
discounts(sku, deal_start_date, deal_end_date)