@CSharpChatЭта группа больше не существует

Страница 694 из 1888
Vasily
04.04.2017
15:47:13
Я в свое время писал собственный mvvm фреймворк,там навигация была организована через команды

Правда,я там и всю отрисовку в шаблонах делал

Nikolay
04.04.2017
17:30:39
Как запрос оптимизировать можно? select user_models.*, count(user_id) as count_messages from chat_logs inner join user_models on user_models.id = user_id where chat_id = ? group by user_id

В таблице 100к записей, запросом выбирается 100 записей, занимает 2 секунды

Google
Alexander
04.04.2017
17:32:03
проверить наличие индексов

Nikolay
04.04.2017
17:32:11
БД mysql если что

Точнее mariadb

Андрей
04.04.2017
17:34:35
проверить наличие индексов
На айдищниках и так они стоят по которым фильтрация и join

Nikolay
04.04.2017
17:37:37
Да, на айдишниках индексы стоят

Без inner join запрос выполняется 1 секунду

Андрей
04.04.2017
17:42:55
Ну вот и на джоин приходится секунда вторая

Nikolay
04.04.2017
17:43:36
В любом случае, не слишком ли медленно?

Две секунды на простой запрос к таблице где не так много данных, жирно

Дмитрий
04.04.2017
17:45:47
Две секунды на простой запрос к таблице где не так много данных, жирно
У меня из за left join время скакнуло с 63 мс до 6300 мс

В 100 раз Карл!

Nikolay
04.04.2017
17:50:21
Добавил user_id и chat_id в отдельный индекс, на секунду быстрее стало

Теперь с inner join быстрее выборка происходит?

Google
?? Denis
04.04.2017
18:10:22
Покрывающие индексы это очень хорошо

Axm
04.04.2017
18:10:42
Ты смотри план и что там жрет время

И не быстрее ли будет поменять таблицы местами?

Nikolay
04.04.2017
18:12:15
Щас посмотрю

А план как посмотреть?

Axm
04.04.2017
18:12:49
Хуй знает

?? Denis
04.04.2017
18:13:59
оптимизатор сам знает в каком порядке таблицы джойнить

нормальный оптимизатор

Владимир
04.04.2017
18:20:20
Nikolay
04.04.2017
18:20:27
mariadb

Axm
04.04.2017
18:31:53
Vladimir Bondaryuk
04.04.2017
18:33:37
А если вместо count(...) Написать count(1)

Axm
04.04.2017
18:37:57
А план как посмотреть?
https://www.sitepoint.com/using-explain-to-write-better-mysql-queries/

вообще в воркбенче и наверно в других клиентах будет визуально

Vladimir Bondaryuk
04.04.2017
18:44:07
Просто интересно будет ли такой запрос быстрее, попробуй:

select user_models.*, count(1) as count_messages from chat_logs inner join user_models on user_models.id = user_id and chat_id = ? group by user_id

Nikolay
04.04.2017
18:45:14
select user_models.*, count(1) as count_messages from chat_logs inner join user_models on user_models.id = user_id and chat_id = ? group by user_id
Этот запрос: /* Длительность 1 запрос: 1,156 sec. */ Мой запрос: /* Длительность 1 запрос: 1,078 sec. */

Vladimir Bondaryuk
04.04.2017
18:49:33
Не получилось :)

Ilya
04.04.2017
18:52:12
я может чё не понимаю, но как можно выбрать в селект столбцы, которых нет в аггрегирующей функции?

Google
Axm
04.04.2017
18:53:14
Он из той таблицы не берёт ничего кроме каунта

Alexander
04.04.2017
18:54:21
мускуль умеет

Ilya
04.04.2017
18:54:26
user_models.*, - это тогда что?

ааа и какой будет результат?

Nikolay
04.04.2017
18:54:41
user_models.*, - это тогда что?
Все поля таблицы user_models

Axm
04.04.2017
18:55:52
Вообще я бы по рукам бил за отсутствие алиасов везде

Vladimir Bondaryuk
04.04.2017
18:56:22
я может чё не понимаю, но как можно выбрать в селект столбцы, которых нет в аггрегирующей функции?
Я кстати тоже не совсем понял, но я с mysql не работал. Тоже интересно, как он сгрупирует?

Nikolay
04.04.2017
18:56:27
А нафиг здесь алиасы?

Vladimir Bondaryuk
04.04.2017
18:57:37
А если он их(столбцы без агр. функции не группирует) то зачем там group ?

Axm
04.04.2017
18:58:15
Чтобы не гадать какой столбец откуда и в будущем не ловить баг ambiguous column

Alexander
04.04.2017
18:58:38
"MySQL допускает выполнение запросов, не удовлетворяющих данному правилу. При этом для полей без групповых функций и не указанных в части GROUP BY выбирается произвольная строка из группы"

Gid
04.04.2017
19:47:51
БД mysql если что
Сменить бд

Вот как раз оно для оптимизации

Например на рассово верную арийскую сверх базу - мсскл

Axm
04.04.2017
19:48:31
На оракл!

Gid
04.04.2017
19:48:35
Мы же не пхп кодеры в конце концов

Nikolay
04.04.2017
19:49:01
Ну не знаю, на слабом железе хостить mssql такое

Gid
04.04.2017
19:49:34
Бесплатно

Google
Gid
04.04.2017
19:49:41
Абсолютно

Безвозмездно

На мсскл

Nikolay
04.04.2017
19:49:54
К тому же, мне не нужно гигабайты данных перебирать сложными запросами

Gid
04.04.2017
19:51:25
Почему?

Там достаточно мощный сервер

Admin
ERROR: S client not available

Gid
04.04.2017
19:52:00
Разворачиваешь базу в 2 клика

В франкфурте

Nikolay
04.04.2017
19:52:18
Угу, а сервер в России

И гоняй данные туда-сюда

Gid
04.04.2017
19:52:30
Тоже в Германии

И пинг 0

Nikolay
04.04.2017
19:52:51
Короче, такое себе

Мне лучше базу хостить у себя

Gid
04.04.2017
19:53:00
Ну разве что тебе нужно деплоить локально

Мне лучше базу хостить у себя
Ты комп не выруьаешь?

Nikolay
04.04.2017
19:53:25
Вырубаю

Google
Nikolay
04.04.2017
19:53:38
У меня raspberry есть, на ней всякие свои тулзы хостятся

Gid
04.04.2017
19:53:52
А тогда ок

Если на расбери

Тогда 100% оправдано

Nikolay
04.04.2017
19:54:11
;)

Gid
04.04.2017
19:54:21
Если полноценно чето разворачивать то я б брал такую связку

Оч быстро выходит

И многим клиентам хватает

Обычно лоулоад и они базу особо не дрючат

А 20гб я хз сколько написать можно

Nikolay
04.04.2017
19:55:58
Ну серьёзно, неужели mysql не может быстро выборку сделать из 100к записей?

Андрей
04.04.2017
19:57:01
А почему не постгрес? На слабом железе тоже на ура

Nikolay
04.04.2017
19:57:28
Вот я и думаю, почему не постгрес)

Но постгрес вроде тоже не идеален

Леонид
04.04.2017
19:59:52
Щас бы не асилилить авс или ажуру

Где под сракой мощные сервера

Nikolay
04.04.2017
20:00:58
Угу

И хостить там телеграм бота

Страница 694 из 1888

Эта группа больше не существует Эта группа больше не существует