我有以下问题
DECLARE lv_Duration INT;
SET @lv_Duration = 0;
SELECT @lv_Duration := TIMESTAMPDIFF(SECOND, changedon,NOW())
FROM `transactionhistory`
WHERE transaction_Id = TRIM(_transaction)
ORDER BY tsh_id DESC
LIMIT 1;
自从上次输入 transaction_Id 字段以来,我得到了时间。但是在相对中等大小的表中它花费了 0.25 秒。我的主要自动增量字段是 tsh_id。我在 transaction_Id 字段上有索引。我认为订购和记录最后一条记录可能会对性能产生影响。那么还有其他选择吗?
最佳答案
来自ORDER BY
optimisation link由 McAdam331 提供 我相信您的查询符合以下模式:
SELECT *
FROM t1
WHERE key_part1 = constant
ORDER BY key_part2;
(transaction_Id,tsh_id)
上的复合索引应该可以加快速度。
我认为没有比 LIMIT
更快的方法来获取最新记录。
关于mysql - 无限制获取最后记录的任何更好的选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30530501/