Большой случайный выбор таблицы с некоторыми особенностями - PullRequest
0 голосов
/ 03 мая 2019

У меня есть таблица с 800k строк, и мне нужно выбрать 20 случайных строк, которых нет в других 2 таблицах (билеты уже куплены).

Я уже пробовал SQL с синтаксисом NOT IN, но он все еще(иногда 1 с в машине разработки).

Фактический 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 рандовых строк происходит очень медленно.Эта функция выполняется на всех страницах веб-сайта, и я думаю, как оптимизировать и кэшировать этот запрос.

Спасибо всем за поддержку

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...