Я построил сайт, в котором есть около 1 000 000 продуктов. Я хочу создать набор карт сайта, которые будут содержать ссылки на все продукты. Я понимаю, что карты сайта могут содержать до 50 000 ссылок, поэтому мой план состоит в том, чтобы построить 20 таких карт сайта.Последовательная работа через таблицу MYSQL с 1 000 000 записей?
Я хочу сделать это с помощью ряда операторов SQL. Мой план: 1000 SQL-операторов, каждая из которых выдержит 1000 продуктов. Операторы SQL будут выглядеть так:
SELECT name, category, catalog_number FROM product ORDER BY id LIMIT 0, 1000
SELECT name, category, catalog_number FROM product ORDER BY id LIMIT 1000, 1000
SELECT name, category, catalog_number FROM product ORDER BY id LIMIT 2000, 1000
SELECT name, category, catalog_number FROM product ORDER BY id LIMIT 3000, 1000
И так далее.
Проблема заключается в том, что, поскольку первый аргумент LIMIT (смещение) растет, количество времени, которое каждый sql принимает для выполнения, растет очень быстро! Чтобы быть конкретным, когда первый аргумент для LIMIT был чем-то меньшим, чем 28000, оператор выполнил менее 0,3 секунды. Но когда я пробовал:
SELECT name, category, catalog_number FROM product ORDER BY id LIMIT 29000, 1000
Время, затраченное на выполнение заявления, подскочило до 30 секунд! И каждое утверждение после этого занимало столько же времени, сколько нужно.
Еще одна вещь, которую я пробовал, - это увеличить второй аргумент для LIMIT - но та же проблема возникла.
Любая помощь будет приветствоваться. Спасибо.
Рассмотрите возможность генерации файлов Sitemap из ваших запросов вместо того, чтобы создавать динамические карты. –
Именно так я справился с этим. :) – oyvey