如何优化需要 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 可能必须返回聚簇索引以找到匹配的时间戳值集。
我有一个 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 可能必须返回聚簇索引以找到匹配的时间戳值集。