mysql - 由于大“IN”子句,如何优化此查询,因为此 strted 挂起
问题描述
我有以下查询:
SELECT DISTINCT (
device_id
)
FROM ABC
WHERE app_id ='$appid'
AND device_type='Android'
AND device_id
IN (
SELECT device_id
FROM XYZ
WHERE application_id = '$appid'
AND device_type='Android'
AND device_mode='$device_mode'
)
在 IN 子句中,我有 6000 多个项目的数组。所以它开始挂起。请让我知道如何优化它。
PS:我已经阅读了其他解决方案,尝试使用 join 但仍然挂起。
解决方案
我没有测试查询,但根据需要调整或重写它应该不难。而不是大IN()
列表,只需执行INNER JOIN
并提供正确的WHERE
SELECT first.device_id
FROM ABC first
INNER JOIN XYZ second ON first.device_id = second.device_id
WHERE first.app_id = '$appid'
AND first.device_type = 'Android'
AND second.application_id = '$appid'
AND second.device_type = 'Android'
AND second.device_mode = '$device_mode'
GROUP BY first.device_id
推荐阅读
- python - 如何在 TKinter 列表框中移动选择多个项目?
- c - C libpcap API 提取 DNS 查询
- jakarta-ee - 为什么 WSO2 API Manager 有时会出错:代理错误代理服务器收到来自上游服务器的无效响应?
- javascript - JS:按下按钮n次后如何执行功能?
- docker - Docker API 构建 Tar 文件路径
- qt - 强制 qt-vlc 不隐藏鼠标光标
- ruby - 如何在配方中的控制语句中检查节点版本
- vba - 复制和重命名文件
- angular - Angular 2 - 在父组件单击的按钮上将数据从父组件传递到子组件
- ios - 如何在 AVPlayer 中正确播放 MPMediaPicker 中的歌曲?