|
Долгий простой запрос из небольшого количества записей.
|
|||
---|---|---|---|
#18+
Добрый день! Странная проблема - достаточно простой запрос: SELECT k.id kid, k.ip kip, k.time ktim, k.name knam, k.url kurl, k.ocenka koc, k.text ktex, s.zagol szag, k.server kserv FROM nstat25 k, nstat15 s WHERE k.url = s.url AND k.server = s.server AND k.mask='y' ORDER BY k.time DESC LIMIT 0, 10 т.е. из 2-х таблиц, в каждой менее 4000 записей, но запрос выполняется 3 секунды. Прочитал несколько похожих тем, но не очень понял, как решить проблему. Может в запросе я что-то делаю не так? Но ведь мелкие таблицы. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2019, 17:41 |
|
Долгий простой запрос из небольшого количества записей.
|
|||
---|---|---|---|
#18+
Покажите DDL таблиц и план запроса. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2019, 17:47 |
|
Долгий простой запрос из небольшого количества записей.
|
|||
---|---|---|---|
#18+
id select_type table partitions type possible_keys key key_len ref rows filtered Extra1 SIMPLE s NULL ALL NULL NULL NULL NULL 3342 100.00 Using temporary; Using filesort1 SIMPLE k NULL ALL NULL NULL NULL NULL 3840 0.10 Using where; Using join buffer (Block Nested Loop) Что такое DDL не знаю :( ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2019, 21:44 |
|
Долгий простой запрос из небольшого количества записей.
|
|||
---|---|---|---|
#18+
VladRostЧто такое DDL не знаю :( SHOW CREATE TABLE tbl_name ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2019, 21:58 |
|
Долгий простой запрос из небольшого количества записей.
|
|||
---|---|---|---|
#18+
Таблица: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2019, 22:02 |
|
Долгий простой запрос из небольшого количества записей.
|
|||
---|---|---|---|
#18+
nstat15 Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
nstat25 Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2019, 22:10 |
|
Долгий простой запрос из небольшого количества записей.
|
|||
---|---|---|---|
#18+
s.url, s.server - какое-то из этих двух полей надо проиндексировать, или даже оба - зависит от их селективности. Существует ли гарантия, что для каждой записи из таблицы nstat25 найдется хотя бы одна запись в таблице nstat15 ? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2019, 22:12 |
|
Долгий простой запрос из небольшого количества записей.
|
|||
---|---|---|---|
#18+
miksofts.url, s.server - какое-то из этих двух полей надо проиндексировать, или даже оба - зависит от их селективности. Но ведь маленькие таблицы же. Без индексирования никак? miksoftСуществует ли гарантия, что для каждой записи из таблицы nstat25 найдется хотя бы одна запись в таблице nstat15 ? По идее да - соответствие должно быть. В принципе server + url в nstat15 - уникальное сочетание, можно в nstat25 вместо них использовать ссылку на ID из nstat15. Так будет быстрее? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2019, 22:59 |
|
Долгий простой запрос из небольшого количества записей.
|
|||
---|---|---|---|
#18+
VladRostНо ведь маленькие таблицы же. Без индексирования никак?Сравните 4000*4000 и 4000*log 2 4000 Примерно в 300 раз разница. Другими способами добиться такой разницы если и возможно, то крайне затратно. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.05.2019, 00:16 |
|
Долгий простой запрос из небольшого количества записей.
|
|||
---|---|---|---|
#18+
VladRostПо идее да - соответствие должно быть."По идее" тут не годится - нужна гарантия. Если гарантия есть, то можно отбор записей по ORDER BY k.time DESC LIMIT 0, 10 выполнить до джойна и тогда вместо 4000 записей из первой таблицы в джойн пойдет только 10 - 400 раз разницы. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.05.2019, 00:18 |
|
Долгий простой запрос из небольшого количества записей.
|
|||
---|---|---|---|
#18+
VladRostможно в nstat25 вместо них использовать ссылку на ID из nstat15.Сравнение одного числового поля, конечно, будет быстрее, чем двух строковых. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.05.2019, 00:19 |
|
Долгий простой запрос из небольшого количества записей.
|
|||
---|---|---|---|
#18+
Нормализуйте данные. Связывание по VARCHAR сродни бреду. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.05.2019, 07:38 |
|
Долгий простой запрос из небольшого количества записей.
|
|||
---|---|---|---|
#18+
VladRostid select_type table partitions type possible_keys key key_len ref rows filtered Extra1 SIMPLE s NULL ALL NULL NULL NULL NULL 3342 100.00 Using temporary; Using filesort1 SIMPLE k NULL ALL NULL NULL NULL NULL 3840 0.10 Using where; Using join buffer (Block Nested Loop) феерично ... |
|||
:
Нравится:
Не нравится:
|
|||
07.05.2019, 10:26 |
|
|
start [/forum/topic.php?fid=47&fpage=36&tid=1829161]: |
0ms |
get settings: |
11ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
39ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
47ms |
get tp. blocked users: |
2ms |
others: | 330ms |
total: | 465ms |
0 / 0 |