Добавляем необходимые индексы в таблицу

В случае, если галереи содержат несколько тысяч изображений, в зависимости от мощности сервера и посещаемости сайта могут возникнуть проблемы с производительностью, связанные с неоптимальностью индексов в таблице wp_ngg_pictures.

Проявляется это в том, что при отображении любой галереи MySQL приходится полностью сканировать таблицу wp_ngg_pictures.

Например:

[-]
View Code MySQL
EXPLAIN
SELECT SQL_CALC_FOUND_ROWS tt.*, t.*
FROM wp_ngg_gallery AS t INNER JOIN wp_ngg_pictures AS tt ON t.gid = tt.galleryid
WHERE t.gid = 3 AND tt.exclude<>1
ORDER BY tt.sortorder ASC
[-]
View Code Text
+----+-------------+-------+-------+---------------+---------+---------+-------+--------+----------------+
| id | select_type | table | type  | possible_keys | key     | key_len | ref   | rows   | Extra          |
+----+-------------+-------+-------+---------------+---------+---------+-------+--------+----------------+
|  1 | SIMPLE      | t     | const | PRIMARY       | PRIMARY | 8       | const |      1 | Using filesort |
|  1 | SIMPLE      | tt    | ALL   | NULL          | NULL    | NULL    | NULL  |  11700 | Using where    |
+----+-------------+-------+-------+---------------+---------+---------+-------+--------+----------------+

Исправляется ситуация путём добавления ключа по столбцам galleryid и sortorder в таблицу wp_ngg_pictures:

[-]
View Code MySQL
ALTER TABLE `wp_ngg_pictures` ADD KEY (`galleryid`, `sortorder`)

После этого EXPLAIN покажет значительно лучшую картину:

[-]
View Code Text
+----+-------------+-------+-------+---------------+-----------+---------+-------+------+-------------+
| id | select_type | table | type  | possible_keys | key       | key_len | ref   | rows | Extra       |
+----+-------------+-------+-------+---------------+-----------+---------+-------+------+-------------+
|  1 | SIMPLE      | t     | const | PRIMARY       | PRIMARY   | 8       | const |    1 |             |
|  1 | SIMPLE      | tt    | ref   | galleryid     | galleryid | 8       | const |   59 | Using where |
+----+-------------+-------+-------+---------------+-----------+---------+-------+------+-------------+

Как видим, использование правильного индекса позволяет избежать файловой сортировки; к тому же, из таблицы wp_ngg_pictures сразу выбираются только нужные данные (59 строк против 11,700 строк).

Добавить в закладки
  • del.ici.ous
  • Digg
  • Furl
  • Google
  • Simpy
  • Spurl
  • Y! MyWeb
  • БобрДобр
  • Мистер Вонг
  • Yandex.Закладки
  • Текст 2.0
  • News2
  • AddScoop
  • RuSpace
  • RUmarkz
  • Memori
  • Google Bookmarks
  • Писали
  • СМИ 2
  • Моё Место
  • 100 Закладок
  • Ваау!
  • Technorati
  • RuCity
  • LinkStore
  • NewsLand
  • Lopas
  • Закладки - IN.UA
  • Connotea
  • Bibsonomy
  • Trucking Bookmarks
  • Communizm
  • UCA
  • Slashdot
  • Magnolia
  • Blogmarks
  • Current
  • Meneame
  • Oknotizie
  • Diigo
  • Funp
  • Hugg
  • Dealspl.us
  • N4G
  • Mister Wong
  • Faves
  • Yigg
  • Fresqui
  • Care2
  • Kirtsy
  • Sphinn
  • SaveThis.ru

Связанные записи

6
Июнь
2009

Комментарии к статье «Увеличение производительности плагина NextGen Gallery»  »

К статье «Увеличение производительности плагина NextGen Gallery» комментариев пока нет. Не хотите ли стать первым?

Подписаться на RSS-ленту комментариев к статье «Увеличение производительности плагина NextGen Gallery» Trackback URL: http://blog.sjinks.org.ua/wordpress/572-improving-nextgen-gallery-performance/trackback/

Оставить комментарий к записи «Увеличение производительности плагина NextGen Gallery»

Вы можете использовать данные тэги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Оставляя комментарий, Вы выражаете своё согласие с Правилами комментирования.

Подписаться, не комментируя