|
|
|
|
|
для: Trianon
(26.07.2007 в 11:20)
| | Спасибо за информацию. А где можно почитать о "правилах хорошего тона" при составлении запросов? Я, конечно, не знаю, всех тонкостей... В данном случае запрос выполняется, с нормальной скоростью, да ну и пусть. А в будущем может и пригодиться. Даже этот запрос подправлю | |
|
|
|
|
|
|
|
для: Woland
(26.07.2007 в 10:58)
| | Я имею в виду , что ни
SELECT base_severity,id_host FROM messages JOIN mnemonics USING (id_mnemonic)... GROUP BY base_severity
ни тем более SELECT * FROM table... GROUP BY base_severity
не являются запросами однозначной трактовки.
В приличных серверах такие запросы будут вызывать сообщения об ошибках:
Column 'messages.id_host' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause
а не выдавать результат. | |
|
|
|
|
|
|
|
для: Trianon
(25.07.2007 в 09:16)
| | Не понимаю, в чем суть вопроса.
Вы имеете в виду, что GROUP BY находится во внешнем запросе, а не в подзапросе? | |
|
|
|
|
|
|
|
для: Woland
(25.07.2007 в 05:58)
| | А GROUP BY? | |
|
|
|
|
|
|
|
для: Trianon
(24.07.2007 в 18:41)
| | Но поле id_mnemonic в таблице `mnemonics` ключевое, и id_mnemonic в таблице `messages` является внешним ключом, соответственно, между всеми записями этих таблиц есть соответствие "1:N" | |
|
|
|
|
|
|
|
для: Woland
(24.07.2007 в 18:35)
| | Полагаю, как только Вы напишете LEFT JOIN , перформанс упадет вниз.
У Вас, похоже, куча записей, в которых id_mnemonic либо не задано либо не найдено в таблице mnemonics.
Ну и левый GROUP BY тоже однозначность в ситуацию не вносит. | |
|
|
|
|
|
|
|
для: Woland
(20.07.2007 в 17:16)
| | Нашел решение вопроса. Выглядит следующим образом:
SELECT *,count(*) AS cnt
FROM
(SELECT base_severity,id_host
FROM messages JOIN mnemonics USING (id_mnemonic)
WHERE syslog_date>(NOW()-interval 1 hour) ) AS res
WHERE id_host=1
GROUP BY base_severity
|
Запрос выполняется очень быстро. Судя по всему, проблемы с оптимизатором базы данных? | |
|
|
|
|
|
|
|
для: Trianon
(24.07.2007 в 15:58)
| | Нет, ни один из них | |
|
|
|
|
|
|
|
для: Woland
(24.07.2007 в 15:45)
| | А остальные обслуживающие запросы индексы не восстанавливают?
CHECK TABLE messages;
ANALYZE TABLE messages;
OPTIMIZE TABLE messages; | |
|
|
|
|
|
|
|
для: Trianon
(24.07.2007 в 15:12)
| | >а с чего Вы решили, что их всего 15?
Из PHPmyAdmin | |
|
|
|
|