botaniQQQ
@botaniQQQ
Q

Как рационально используя MySQL вывести товары из большой БД постепенно с течением времени?

Привет.

Есть большая БД товаров ~ 1 млн и нужно сделать,чтобы на сайте они появились не сразу, а по 20 шт. в час, чтобы было видно обновление сайта.
Есть массив таких товаров, который обновляется каждый час и добавляет туда по 20 новых ID и собственно таким образом получаю их:

SELECT * 
FROM goods 
WHERE 
(
    id = 6475 OR 
    id = 284906 OR 
    id = 36784 OR 
    id = 22738 OR
    id = 229985 OR 
    id = 33748 OR 
    id = 2234 OR 
    id = 40596
) 
ORDER BY goods_type 
LIMIT 230, 10


Если у меня будет в этом условии ... id = 6475 OR id = 284906 ... к примеру 900 000 ID товаров, запрос будет обрабатываться долго?
Каким образом посоветуете выводить товары постепенно с течением времени (изменять исходную БД я не могу)?
  • Вопрос задан
  • 112 просмотров
Пригласить эксперта
Ответы на вопрос 3
@dmitryKovalskiy
программист средней руки
Ооххх..мои глазааа... А инструкцию WHERE id IN (1,2,3,...) не видели ни разу?
Откуда берется нужный список? можно создать временную таблицу с этими id и сделать INNER JOIN с таблицей с данными.
Ответ написан
Комментировать
Fqyeh29
@Fqyeh29
↓ ИМХО ↓
Погугли "ускорение запросов mysql с помощью индексов".

Сам не очень в mysql но у нас с базы в 20 млн строк ответ приходит мгновенно благородя индексам(ну + серв нормальный).
Ответ написан
Комментировать
kylt_lichnosti
@kylt_lichnosti
900 000 строк таблицы это не только для БД сложно это и браузеру еще надо переварить.
И главное - это никому не надо. Никто больше нескольких десятков строк глазами просматривать не будет.
Сделайте пагинацию или загрузку последней сотни записей js-ом, что бы эти записи заменяли старые...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы