powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Оптимизация индекса
11 сообщений из 36, страница 2 из 2
Оптимизация индекса
    #38934782
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Про скорость индексов понял... вот если бы там все время уходило на поиск в индексе, то да, а так сложно вообще понять на что тратится время, может быть и на индекс, а может на слияние данных?


авторНадо! Сервер не настолько умён, чтобы догадаться, что все записи группы содержать одно и то же значение в негруппируемом поле. Как итог - при построении суммарной комбинации полей группировки и отбора получается "разрыв", и индекс используется неэффективно - вместо простого выбора по индексу начинается сканирование значений таблицы.

Только я не понимаю, как тогда должен выглядеть запрос
...
Рейтинг: 0 / 0
Оптимизация индекса
    #38934785
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"is_deleted" --> "min/max(is_deleted)"
...
Рейтинг: 0 / 0
Оптимизация индекса
    #38934788
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tanglir"is_deleted" --> "min/max(is_deleted)"
Это да
...
Рейтинг: 0 / 0
Оптимизация индекса
    #38934805
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если так подумать, то все даты >= '2015-03-14' как и все даты < '2015-04-13' могут содержать все 12 партишенов. Тогда как заставить работать только с необходимыми? К примеру их высчитать можно, как правило запрос ограничен временным интервалом в 1 месяц (т.е. максимум 2 партишена)?
...
Рейтинг: 0 / 0
Оптимизация индекса
    #38934807
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
или я гоню
...
Рейтинг: 0 / 0
Оптимизация индекса
    #38934814
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автор. Pruning can also be applied for tables partitioned on a DATE or DATETIME column when the partitioning expression uses the YEAR() or TO_DAYS() function.
...
Рейтинг: 0 / 0
Оптимизация индекса
    #38934822
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HettПро скорость индексов понял... вот если бы там все время уходило на поиск в индексе, то да, а так сложно вообще понять на что тратится время, может быть и на индекс, а может на слияние данных?


Время тратится на чтение индекса и данных (или только данных), сортировку и группировку данных.
...
Рейтинг: 0 / 0
Оптимизация индекса
    #38934823
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hettили я гоню

Концентрируй мысли.
В более объёмные собщения.
...
Рейтинг: 0 / 0
Оптимизация индекса
    #38934831
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HettЕсли так подумать, то все даты >= '2015-03-14' как и все даты < '2015-04-13' могут содержать все 12 партишенов. Тогда как заставить работать только с необходимыми? К примеру их высчитать можно, как правило запрос ограничен временным интервалом в 1 месяц (т.е. максимум 2 партишена)?

Ну да, предвычисли месяца, за которые будет выборка, и вставь их отдельным условием.
Тогда основное условие по датам будет ещё больше ограничивать условие по месяцам, а условие по месяцам будет отрезать ненужные партиции. И тогда у тебя по идее будет не больше 2 или 3 месяцев (если "в центре" диапазона февраль).
Интервал тоже можно предвычислять ( и будет лучше ).

Но ещё раз -- нужно ли здесь такое партицирование -- большой вопрос.
Хотя может быть оно нужно по другим причинам, например -- возможность быстрого удаления данных (обычно это основное).
...
Рейтинг: 0 / 0
Оптимизация индекса
    #38934839
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Партицирование сделали именно для очистки, а то удаление постоянно сильно фрагментировало да и нагружало.

Нашел возможность указывать какие именно партиции следует использовать:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
INSERT INTO tmp_analytics
SELECT
  analytics.user_file_id,
  IFNULL(SUM(analytics.paids_sum), 0) AS paids_sum,
  IFNULL(SUM(analytics.paids_count), 0) AS paids_count,
  IFNULL(SUM(analytics.requests), 0) AS requests,
  IFNULL(SUM(analytics.downloads), 0) AS downloads
FROM fh_analytics_file 
  PARTITION (p03, p04, p05) 
  AS analytics 
  FORCE INDEX (IDX_fh_analytics_file__user_id__user_file_id__date )
  
WHERE analytics.user_id = '42'
AND analytics.date >= '2015-03-14'
AND analytics.date < '2015-04-13' + INTERVAL 1 DAY
GROUP BY analytics.user_file_id;
...
Рейтинг: 0 / 0
Оптимизация индекса
    #38937899
Фотография javajdbc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hett,

сделай ОЛАП куб:

-- или самому продумат' пре-агрегацию на просто МыСКЛ таблицах
(по мотивам ОЛАП кубов)

-- или испол'зоват' всякие Мондрианы или ОпенОЛАП (потянут ли такой об'ем?)

-- или переходит' на МС ССАС, ЕССБасе и всякие другие сер'езные штучки-дрючки...
(они то потянут, но придется уходит' с оптимизировного под ОЛТП МыСКЛа)
...
Рейтинг: 0 / 0
11 сообщений из 36, страница 2 из 2
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Оптимизация индекса
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]