|
|
|
Сортировка после distinct SUBSTRING_INDEX(...)
|
|||
|---|---|---|---|
|
#18+
Да уж, это круче чем мой баг с рандомом А такой запрос Код: sql 1. 2. 3. 4. 5. 6. тоже выдаст 9 и 0.05 с инсертом и без соответственно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2015, 13:47 |
|
||
|
Сортировка после distinct SUBSTRING_INDEX(...)
|
|||
|---|---|---|---|
|
#18+
Можно добавить индекс на поле `Message` и сортировать по нему. Если оно начинается с IP - то сортировка будет работать как надо и очень быстро. Длину индекса кстати можно указать - varchar(17), так как для сортировки нам важный первые 17 символов (_XXX.XXX.XXX.XXX) Рекомендую никогда не делать сортировку по не индексированному полю. В вашем случае конечно интерпретатор работает интересно. Может быть он считает сортировку в данном случае более простой операцией, чем условия WHERE и выполняет ее раньше. Для всех строк - это долго. При использовании LIMIT это было бы оправдано. Но это лишь мое предположение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.01.2016, 05:24 |
|
||
|
Сортировка после distinct SUBSTRING_INDEX(...)
|
|||
|---|---|---|---|
|
#18+
Николай Жуков, зачем вам скорость? кто пользователь? у вас такие запросы идут по 5 штук в секунду? Если нужно часто, имеет смысл копать в сторону логический улучшений: 1. Вместо постояной дро..и распоковки и пасинга можно распарсить message на вставке. добарить деривативные (расчетные) поля IP и ValidIpFlag=(0|1) и соответсвыюший индекс(ы) Код: sql 1. 2. 3. 4. 5. 6. 7. 2. создать агрегированую таблицу уникальных ИП на каждый день или там каждый час. Дополнять таблицу по истечении очередного промежутка. Если надо иметь результат до последней секунды, то выбирать значения из пре-агрегатной таблицы до поледнего часа а потом просчитывать динамически только последние минуты после часа. Это вариант грамчик сложноватенький по организации зато получите результат порядка нескольких милисекунд ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.01.2016, 06:19 |
|
||
|
Сортировка после distinct SUBSTRING_INDEX(...)
|
|||
|---|---|---|---|
|
#18+
javajdbcзато получите результат порядка нескольких милисекундУ него и так было 50-60 мс. Хотя я не понимаю, почему так быстро. А при вставке в таблицу или еще каком-либо использовании результата запроса размером в 80 несчастных записей вдруг время подскакивает до 9 секунд. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.01.2016, 13:41 |
|
||
|
Сортировка после distinct SUBSTRING_INDEX(...)
|
|||
|---|---|---|---|
|
#18+
miksoftjavajdbcзато получите результат порядка нескольких милисекундУ него и так было 50-60 мс. Хотя я не понимаю, почему так быстро. А при вставке в таблицу или еще каком-либо использовании результата запроса размером в 80 несчастных записей вдруг время подскакивает до 9 секунд. да, тут какая-то техническая проблема. Но кроме любопытсва почему имено такой запрос рабодает через пень-колоду -- мне не нравится сама идея часто перелопачивать (в основном статические) милион записей чтобы выташить 80 значений. Интереснее решать бизнес / логические задачи, заранее приготовить данные для быстрого потребления , пре-агрегировать, итд... Однозначно плохо иметь такую недетерминированую ситуацию, но как бы база сама намекает что запрос "корявый"... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.01.2016, 01:49 |
|
||
|
Сортировка после distinct SUBSTRING_INDEX(...)
|
|||
|---|---|---|---|
|
#18+
javajdbcзаранее приготовить данные для быстрого потребления , пре-агрегировать, итд... Однозначно плохо иметь такую недетерминированую ситуацию, но как бы база сама намекает что запрос "корявый"... Я и забыл про этот пост уже Подготовить данные нет возможности Речь идет о стандартном syslogd mysql На Ubuntu Все что могу это добавлять индексы но колонка messages - text А лог отправляют аппаратные маршрутизаторы Мне если честно и сортировка то не нужно Но просматривает начальство а им подавай цифры по порядку чтоб искать проще Если есть возможность связать две таблицы вместе (средствами mysql) И во вторую таблицу автоматически распарсивать messages из первой по колонкам с индексами по мере добавления. то это наверно единственный вариант, после переписывания syslog под себя. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2016, 01:36 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=39142934&tid=1832082]: |
0ms |
get settings: |
9ms |
get forum list: |
21ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
50ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
62ms |
get tp. blocked users: |
2ms |
| others: | 231ms |
| total: | 399ms |

| 0 / 0 |
