mysql - 优化查询 : joining a table on itself

标签 mysql

我想在一个查询中获取表的最后两行作为新数据和以前的数据

我得到了

 select tbl.x , tbl2.x as last_x 
 from tbl left join tbl tbl2 ON tbl.id!= tbl2.id
 order by tbl.id desc , tbl2.id desc limit 1

它工作正常,但我认为它在大数据库中可能会变慢

有什么办法可以让它更快吗?

最佳答案

LIMIT 应该在基本子查询中工作,因此下面的查询可能更有效

SELECT Sub1.x , Sub2.x as last_x 
FROM (SELECT x FROM tbl ORDER BY tbl.id DESC LIMIT 1) Sub1
CROSS JOIN (SELECT x FROM tbl ORDER BY tbl.id DESC LIMIT 2, 1) Sub2

关于mysql - 优化查询 : joining a table on itself,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15898410/

相关文章:

mysql - 查询错误#1241

mysql - 使用一个数据和查询更新多个表

mysql - 给定一个帖子 X,选择所有的帖子 Y,使得对它们都评分的用户都没有喜欢它们

java - JDBC 规范是否定义了如果您对列名冲突的查询调用 `ResultSet.getObject(String)` 会发生什么情况?

php - SQLite通过php将数据持久保存到MySQL服务器iOS

mysql - 即使没有显示错误,在 Spring Boot 中使用 @query 更新查询也不起作用

php 将 http 链接添加到变量

mysql - 当字段是唯一键的一部分时,如何向 mysql 表中所有行的日期时间字段添加时间?

php - 如何根据在 PHP MySQL 和 JQuery 中输入的州名称自动完成城市列表

java - 将特定用户保存的多个 url 插入数据库的最佳方法是什么?