我对 mysql 查询中的 WhERE IN () 条件有一个严重的问题。我正在从两个不超过 10 个字段的表中获取 RESULT。我在两者中都创建了主要字段。
我需要使用 WHERE IN () 来查看可能超过 500 或更长的登录 ID。因此,它创建了一个繁重的查询,并且它获取记录的速度太慢。当 login_in ID 小于 20 左右时,它很好,但当它们超过 50 或 100 或更多时,它变得更慢并且需要很长时间来处理。
所以,我的问题是如何让它快速?我使用了错误的技术吗?我的意思是我应该在 IN() 的地方使用其他东西吗?任何想法将不胜感激。
SELECT subscriber. * , track . *
FROM track, subscriber
WHERE track.type =1 AND
track.logged_in IN ( 2803, 2806, 54, 54, 64, 383, 833, 2808, 2809, 2810, 56, 2811, 2812, 2813, 2814, 2815, 2816, 2817, 2818, 2819, 2820, 2821, 2822, 2823, 2824, 2825, 2826, 2827, 2828, 2829, 2830, 2831, 2832 ) AND
subscriber.post_id = track.post_id AND
track.nmade = subscriber.nmade AND
subscriber.userid = '54'
ORDER BY track.date_created DESC
LIMIT 5