Оптимизация Slow Query

SELECT DISTINCT node.nid AS nid, node.created AS node_created, node.title AS node_title,
node_comment_statistics.comment_count AS node_comment_statistics_comment_count, node.sticky AS node_sticky
FROM node node
INNER JOIN node_comment_statistics node_comment_statistics ON node.nid = node_comment_statistics.nid
WHERE (node.status = 1)AND (node.type IN ('video', 'text', 'photo'))
ORDER BY node_sticky DESC , node_created DESC
LIMIT 0 , 6

Доброго времени суток!
Есть такой mysql, время выполнения напрягает 800-1200ms
Что посоветуете?

Коментарів:

8

Коментувати

Увійдіть або зареєструйтесь, щоб додати коментар

Коментарі

Бежать с хостинга на другой. В таблицах не миллиарды нод, как я понимаю.

бежать всегда успеется. тем более это views, и он кешируется, но сам факт. Что-то тут не так

Первая загрузка - тут все плохо((
Executed 350 queries in 823.4 milliseconds. Queries taking longer than 5 ms and queries executed more than once, are highlighted. Page execution time was 1367.98 ms.

SELECT DISTINCT node.nid AS nid, node.created AS node_created, node.title AS node_title, node_comment_statistics.comment_count AS node_comment_statistics_comment_count, node_data_field_urgently.field_urgently_value AS node_data_field_urgently_field_urgently_value, node.type AS node_type, node.vid AS node_vid, node.sticky AS node_sticky
FROM node node
INNER JOIN node_comment_statistics node_comment_statistics ON node.nid = node_comment_statistics.nid
LEFT JOIN content_type_photo_post node_data_field_urgently ON node.vid = node_data_field_urgently.vid
WHERE (
node.status =1
)
AND (
node.type IN ('video', 'text', 'photo')
)
ORDER BY node_sticky DESC , node_created DESC
LIMIT 0 , 6

По phpmyadmin: Отображает строки 0 - 5 ( 6 всего, Запрос занял 0.7448 сек.)

повторное обновление(этого запроса нет):
Executed 330 queries in 30.42 milliseconds. Queries taking longer than 5 ms and queries executed more than once, are highlighted. Page execution time was 494.06 ms.

Почему так?

На моем локальном компьютере phpmyadmin работает так:
Showing rows 0 - 29 (1517 total, Запрос занял 0.0003 сек.)

Вам нужно у суппорта спрашивать, это косяки на стороне сервера, возможно кто-то ддосит или нагружает базу данных и поэтому ее так бросает.

Отображает строки 0 - 29 ( 31,319 всего, Запрос занял 0.0004 сек.)

простой запрос да, но с join-ами совсем другая картина

id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE node ref PRIMARY,node_status_type,node_type node_status_type 4 const 23054 Using where; Using temporary; Using filesort
1 SIMPLE node_comment_statistics eq_ref PRIMARY PRIMARY 4 *.node.nid 1
1 SIMPLE node_data_field_urgently eq_ref PRIMARY PRIMARY 4 *.node.vid 1

а що показує
EXPLAIN SELECT DISTINCT node.nid AS nid, node.created AS node_created, node.title AS node_title,
node_comment_statistics.comment_count AS node_comment_statistics_comment_count, node.sticky AS node_sticky
FROM node node
INNER JOIN node_comment_statistics node_comment_statistics ON node.nid = node_comment_statistics.nid
WHERE (node.status = 1)AND (node.type IN ('video', 'text', 'photo'))
ORDER BY node_sticky DESC , node_created DESC
LIMIT 0 , 6
????