如何优化需要 10 秒获取结果的 MySQL 查询

How to optimize a MySQL query which is taking 10 sec to fetch results

我有一个 MySQL 数据库。我有一个 table 里面有大约 200000 行。

我正在通过此 table 查询以获取最新的 data.Query

select *
from `db`.`Data`
where
     floor = "floor_value" and
     date = "date_value" and
     timestamp > "time_value"
order by
    timestamp DESC
limit 1

获取数据大约需要 9 秒,当 table 中的行数较少时,获取数据不需要这么长时间。谁能帮我减少查询时间?

尝试添加以下复合索引:

CREATE INDEX idx ON Data (floor, date, timestamp);

该索引应涵盖整个 WHERE 子句,理想情况下也应可用于 ORDER BY 子句。 timestamp 在索引中出现 last 的原因是这样可以通过扫描索引生成一组最终的匹配时间戳值。如果我们将 timestamp 放在首位,MySQL 可能必须返回聚簇索引以找到匹配的时间戳值集。