mysql 查询,不太复杂的查询出现 "sending data"错误

标签 mysql sql database

我的数据就像

| order_id  |  user_id  |     ip      |
---------------------------------------
| 1001      |   2       | 192.168.1.1 |    
| 1002      |   5       | 192.168.1.1 |    
| 1003      |   2       | 192.168.1.1 |    
| 1004      |   12      |   18.15.0.1 |    
| 1005      |   9       |    10.0.0.1 |  

SELECT "ip", user_id
FROM userlog
WHERE "ip" IN (
    SELECT "ip"
    FROM userlog
    GROUP BY "ip"
    HAVING COUNT(*) > 1
)
GROUP BY "ip"
ORDER BY "id" DESC

当我在桌面上运行此查询时,我会在 1 秒内得到结果,但是当我在生产服务器上运行相同的查询时,查询会挂起数小时,并发送消息数据、填充临时表... 为什么这个查询给我带来这么多麻烦以及如何扩展它以便我可以运行它以避免这个发送数据问题?

最佳答案

尝试使用自连接,例如:

SELECT u1."ip", u1.user_id
FROM userlog u1
JOIN userlog u2
    ON u1.ip = u2.ip and u1.order_id <> u2.order_id
ORDER BY u1."id" DESC

关于mysql 查询,不太复杂的查询出现 "sending data"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42780549/

相关文章:

mysql - SQL - 将另一个表的值插入到多个列中并将它们嵌入到预定义的值中

mysql - 已经有一个与此连接关联的打开的 DataReader,必须先关闭它 + asp.net mvc

mysql - SQL:如何查询我的客户在我们注册6个月后进行过购买的信息?

sql - 子查询返回大于等于命令的数字

MySQL查询以获取多个表上一列的第一个唯一值

php - Symfony 和 MySQL 中的 "Syntax error or access violation: 1142"

sql - 缩放运算符 (*) 在 PostgreSQL 中如何工作?

php - 在 laravel 5 中运行包含除法的 mysql 查询

php - 如何使用字符串条件选项从 mysql DB 获取数据?

mysql 外键不检查正确值