我正在使用以下查询来获取表的最后一行。此代码似乎是应针对此类查询执行的操作。所以我想知道为什么表格要花这么长时间才能输出结果。 我正在寻找可能导致长时间查询的潜在原因。例如,也许该行不在顶部(我使用某些条件),并且如果查询是从表的顶部到底部读取的,则需要花费时间才能到达该行?还是查询需要先读取所有表才能得出结论,哪一行是正确的(我认为情况并非如此)?
对于了解“排序算法”的工作原理所做的贡献。
代码:
SELECT created_at , currency, balance
from YYY
where id in (ZZZ) and currency = 'XXX'
order by created_at desc
limit 1
答案 0 :(得分:0)
这是您的查询:
select created_at, currency, balance
from YYY
where id in (ZZZ) and currency = 'XXX'
order by created_at desc
limit 1;
如果查询没有索引,则引擎需要扫描整个表,选择与where
子句匹配的行,对这些行进行排序,然后选择最大为created_at
的行。 / p>
如果您在YYY(currency, id, created_at desc)
上有一个索引,那么引擎可以立即使用该索引查找适当的值。
因此,如果您在数据库中进行了正确的优化,则查询可能会快很多。