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

标签 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

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

最佳答案

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

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

关于mysql - 哪些索引在此查询中有用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25437011/

相关文章:

java - 如何获得两个 ZonedDateTime 实例中的最大值?

mysql - 如何加入多对多关系

Python Pandas : Return indices of all rows like another row

matrix - 使用向量作为列索引到矩阵的行中,在 Octave 中

node.js - mongodb/mongoose 中的部分索引

python - 如何比较 Python 中的日期?

java - 查找特定 LocalDate 是否属于 YearMonth 的最简单方法是什么?

android - 允许 Android 用户访问我的数据库是一个好习惯吗?

mysql - 如何从 CentOS 7 完全卸载 MariaDB 5.5(包括配置)

php - 从网络查询Mysql数据库时遇到问题