|
No way?
|
|||
---|---|---|---|
#18+
Доброго всем. Две таблицы Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
и Код: sql 1. 2. 3. 4. 5. 6. 7. 8.
Связь по MessageID. Запрос - объединить и отсортировать по полю присоединенной таблицы : Код: sql 1. 2. 3. 4.
EXPLAIN QUERY PLAN: Код: sql 1. 2. 3.
Естественно, медленно. Есть шансы? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.08.2018, 00:59 |
|
No way?
|
|||
---|---|---|---|
#18+
flight-opЕстественно, медленно. Есть шансы? Думаю что нет. Надо сделать копию таблицы Firewalls с добавлением Syslog.HostID, а затем ее отсортировать. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.08.2018, 09:54 |
|
No way?
|
|||
---|---|---|---|
#18+
Прискорбно. Это фундаментальное ограничение или есть СУБД, которые такое могут? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.08.2018, 12:01 |
|
No way?
|
|||
---|---|---|---|
#18+
Фундаментально нет никаких правил как выполнять запрос, каждая СУБД работает по своим внутренним алгоритмам. Как вариант можно попытаться задействовать индекс idxHostIDSyslogMessages. Так дополнительная сортировка не потребуется. Судя по структуре БД LEFT JOIN можно заменить на JOIN Код: sql 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
24.08.2018, 12:35 |
|
No way?
|
|||
---|---|---|---|
#18+
Да, INNER JOIN тут более уместен, спасибо. Идем дальше - фильтруем по HostID, и по чём-нибудь сортируем Код: sql 1. 2. 3. 4.
Опять получаем тормоза Код: sql 1. 2. 3.
Или тут вообще другой какой-то подход нужен? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.08.2018, 14:17 |
|
No way?
|
|||
---|---|---|---|
#18+
Про тормоза уточни: 1. без ORDER BY тоже тормоза? 2. Размеры таблиц какие? сколько записей в каждой? 3. В Syslog сколько записей с HostID=46? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.08.2018, 14:30 |
|
No way?
|
|||
---|---|---|---|
#18+
1. Без ORDER BY всё нормально, равно как и с ORDER BY, но без фильтрации Код: sql 1. 2. 3. 4. 5. 6.
2. Syslog ~150000 записей, Firewalls ~130000 записей. Это тестовые данные, вообще предполагается количество записей в миллионы. 3. Записей с HostID=46 в Syslog ~130000 - это один тестовый маршрутизатор сгенерировал. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.08.2018, 14:45 |
|
No way?
|
|||
---|---|---|---|
#18+
Если что-нибудь одно, то выборки не происходит, а просто находит первую запись результата. Когда WHERE и ORDER BY делается полная выборка и сортировка. 130 тыс. записей многовато. Возможно результат в кэш не влазит и на диск свопиться начинает. Добавь кэшу памяти Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
24.08.2018, 15:35 |
|
No way?
|
|||
---|---|---|---|
#18+
flight-op, А если ещё индексы убрать - ваще круто будет. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.08.2018, 18:18 |
|
No way?
|
|||
---|---|---|---|
#18+
ShSergeflight-op, А если ещё индексы убрать - ваще круто будет. Хм? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.08.2018, 18:26 |
|
No way?
|
|||
---|---|---|---|
#18+
flight-op, Попробуйте дроп индекс. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.08.2018, 18:35 |
|
No way?
|
|||
---|---|---|---|
#18+
flight-opКоторый? Я так понял что все ... |
|||
:
Нравится:
Не нравится:
|
|||
24.08.2018, 18:48 |
|
No way?
|
|||
---|---|---|---|
#18+
С одной стороны выборка 90% таблицы по индексу медленнее чем простой скан таблицы. С другой у нас в запросе есть JOIN, а без индекса это огромный тормоз. И не факт что в продакшене этот запрос вернет 90% таблицы. 5-10% быстрее получить с индексом. Индексы это отчасти гарантия что по мере наполнения БД прога не станет жутко тормозить. Поэтому индексы не надо удалять. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.08.2018, 18:52 |
|
No way?
|
|||
---|---|---|---|
#18+
Нет, фокус не получился - время выполнения запроса подскочило в ~5 раз, с ~2000 мс до ~10000. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.08.2018, 19:03 |
|
No way?
|
|||
---|---|---|---|
#18+
Dima T, Пускай попробует. Мне кажется, что он таки перегнул палку. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.08.2018, 19:08 |
|
No way?
|
|||
---|---|---|---|
#18+
flight-opНет, фокус не получился - время выполнения запроса подскочило в ~5 раз, с ~2000 мс до ~10000. Оставь только поля, где форин кей и примари. Попробуй. У меня по размеру такая же база. Нмкаких индексов не делал. Работает. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.08.2018, 19:12 |
|
No way?
|
|||
---|---|---|---|
#18+
Dima TС одной стороны выборка 90% таблицы по индексу медленнее чем простой скан таблицы. 90% - это частный случай, особенности тестовых данных. Реально - единицы процентов. Вообще, подход надо как-то менять, выдавать сотни тысяч записей человеку кажется не очень хорошей идеей. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.08.2018, 19:14 |
|
|
start [/forum/topic.php?fid=54&msg=39692997&tid=2008435]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
107ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
59ms |
get tp. blocked users: |
1ms |
others: | 280ms |
total: | 492ms |
0 / 0 |