具有特殊性的大表随机选择

时间:2019-05-03 12:14:25

标签: mysql mariadb

我有一个有80万行的表,我需要选择其他2个表(已购买的票)中没有的20个随机行。

我已经尝试过使用NOT IN语法的SQL,但是它仍然(在开发机中有时为1s)。

实际SQL:

SELECT id, description FROM ticket
   WHERE 
     id NOT IN (SELECT id FROM cart_item WHERE DATE(added) = CURDATE()) AND 
     id NOT IN (SELECT id FROM valid_ticket) AND 
     id BETWEEN 1 AND 200000
   ORDER BY RAND() LIMIT 20

我需要更快一些。因为获取所有表并选择20 rand行非常慢。该功能是在网站的所有页面上执行的,我正在考虑如何优化和缓存该查询。

谢谢大家的支持

0 个答案:

没有答案