MySql, кто-нибудь может подсказать, как улучшить мои запросы, скорость моего скрипта? - PullRequest
1 голос
/ 07 марта 2011

Мне нужна помощь, чтобы улучшить скорость моего скрипта.Вот два запроса ..

$sql = "SELECT PadID FROM keywords WHERE Word = '$search'";

$sql = "SELECT Category, LongCategory, PageBase, PageName, ProgramName, 
        ProgramVersion, English250, ReleaseDate, License 
        FROM pads 
        LEFT JOIN categories ON pads.CatID = categories.CatID 
        WHERE PadID IN ($pads) 
        ORDER BY VersionAddDate DESC 
        LIMIT $variable,20";

В первом запросе был получен список идентификаторов PadId, в которых я использую параметр во втором запросе.

Однако в большинстве случаев это работает, еслиМне звонят по очень популярным ключевым словам, запуск сценария может занять несколько секунд.Этим утром у меня было ключевое слово с 9600 записями.

Что я могу сделать, чтобы это исправить.

РЕДАКТИРОВАТЬ: проблема в том, что мой сайт был очищен этим утром, было несколько тысяч звонков в течение 20минут.Однако второй запрос в любом случае занимает несколько секунд с таким количеством записей, поэтому мне нужно его улучшить.

Ответы [ 4 ]

1 голос
/ 07 марта 2011

Вы можете сделать все это только одним запросом, но я сомневаюсь, что это значительно улучшит производительность:

SELECT Category, LongCategory, PageBase, PageName, ProgramName, ProgramVersion, English250, ReleaseDate, License 
FROM pads 
INNER JOIN keywords ON pads.PadID = keywords.PadID
LEFT JOIN categories ON  pads.CatID = categories.CatID
WHERE Word = '$search'
ORDER BY VersionAddDate DESC 
LIMIT $variable,20

В противном случае, вы установили индексы, первичные ключи и внешние ключи в ваших таблицах?

Совершенно нормально, что запрос, возвращающий тысячи результатов, медленнее, чем запрос, возвращающий 10 результатов. Вы не можете ничего с этим поделать. Ваш запрос уже довольно прост. Единственное, о чем я могу думать, это плохие показатели.

0 голосов
/ 07 марта 2011

Вы убедились, что на самом деле медленный запрос sql, а не выполнение сценария (php) и / или рендеринг в браузере?

0 голосов
/ 07 марта 2011

Этим утром у меня было ключевое слово с 9600 записями.

9600 возвращенных записей тяжело загружать И ни полезного результата поиска. (кто просматривает более пяти страниц google-search?)

Снижение RS до 1% имело бы больше смысла, рассмотрите возможность добавления "веса" на основе популярности, даты и т. Д.

Для лучшей производительности используйте составные индексы (самая высокая уникальность).

0 голосов
/ 07 марта 2011

Есть ли у вас какие-либо индексы для соответствующих таблиц, например, для VersionAddDate?

Знаете ли вы о подзапросах?

...