powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Скорость выполнения запроса (Большая таблица)
5 сообщений из 30, страница 2 из 2
Скорость выполнения запроса (Большая таблица)
    #39709819
8POWER-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Проработав все о чем поговорили, кроме смещения таблицы с горизонтальной в вертикальную, получилось добиться результата этого же запроса вместо 0.64-0.75с вместо 1.25с.

Проглядел, что maxPlayers стоял int , убрал float на profit в mediumint , currency теперь не $ а 1 и что-то еще, уже подзабыл.
Долго возился с настройками MySQL сегодня, заметил вот такую вещь:

# Query_time: 3.964766 Lock_time: 0.000197 Rows_sent: 1051346 Rows_examined: 3154038
SET timestamp=1538129731;
SELECT SQL_NO_CACHE `id`, `currency`, `pp1` AS `profit`, `psd1` AS `isSD`, `handLimit` FROM `ps_hands` WHERE `p1` = '96317'
UNION ALL (SELECT `id`, `currency`, `pp2` AS `profit`, `psd2` AS `isSD`, `handLimit` FROM `ps_hands` WHERE `p2` = '96317')
UNION ALL (SELECT `id`, `currency`, `pp3` AS `profit`, `psd3` AS `isSD`, `handLimit` FROM `ps_hands` WHERE `p3` = '96317')
UNION ALL (SELECT `id`, `currency`, `pp4` AS `profit`, `psd4` AS `isSD`, `handLimit` FROM `ps_hands` WHERE `p4` = '96317')
UNION ALL (SELECT `id`, `currency`, `pp5` AS `profit`, `psd5` AS `isSD`, `handLimit` FROM `ps_hands` WHERE `p5` = '96317')
UNION ALL (SELECT `id`, `currency`, `pp6` AS `profit`, `psd6` AS `isSD`, `handLimit` FROM `ps_hands` WHERE `p6` = '96317')
UNION ALL (SELECT `id`, `currency`, `pp7` AS `profit`, `psd7` AS `isSD`, `handLimit` FROM `ps_hands` WHERE `p7` = '96317')
UNION ALL (SELECT `id`, `currency`, `pp8` AS `profit`, `psd8` AS `isSD`, `handLimit` FROM `ps_hands` WHERE `p8` = '96317')
UNION ALL (SELECT `id`, `currency`, `pp9` AS `profit`, `psd9` AS `isSD`, `handLimit` FROM `ps_hands` WHERE `p9` = '96317')
ORDER BY `id` ASC;


Этот запрос на самого крутого(по количеству игр) на данный момент игрока выполняется 3.5-4.3сек.
Слоу лог: Rows_sent: 1051346 Rows_examined: 3154038
Как это возможно? У меня проиндексирован p1-p9 , он ведь должен читать всего 1051346 строк, вместо 3 миллионов?
Почему он читает еще 2 миллиона? Если через OR OR OR то вообще 5 млн и скорость запроса в 2 раза хуже.
...
Рейтинг: 0 / 0
Скорость выполнения запроса (Большая таблица)
    #39709825
8POWER-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В таблице сейчас 66 млн строк...
...
Рейтинг: 0 / 0
Скорость выполнения запроса (Большая таблица)
    #39710164
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
8POWER-Слоу лог: Rows_sent: 1051346 Rows_examined: 3154038
Как это возможно? У меня проиндексирован p1-p9 , он ведь должен читать всего 1051346 строк, вместо 3 миллионов?Судя по тому, что числа различаются ровно в 3 раза, это какой-то эффект самого MySQL. Например, либо от UNION ALL-ов, либо от сортировки, либо от обоих.
...
Рейтинг: 0 / 0
Скорость выполнения запроса (Большая таблица)
    #39710177
8POWER-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoft8POWER-Слоу лог: Rows_sent: 1051346 Rows_examined: 3154038
Как это возможно? У меня проиндексирован p1-p9 , он ведь должен читать всего 1051346 строк, вместо 3 миллионов?Судя по тому, что числа различаются ровно в 3 раза, это какой-то эффект самого MySQL. Например, либо от UNION ALL-ов, либо от сортировки, либо от обоих.
Судя по всему реально так. Убрал юнионы:

Код: sql
1.
2.
3.
Query_time: 11.908202  Lock_time: 0.000158 Rows_sent: 1051346  Rows_examined: 2102692
SET timestamp=1538167584;
SELECT `id`, `currency`, `pp1` AS `profit`, `psd1` AS `isSD`, `handLimit` FROM `ps_hands` WHERE `p1` = '96317' OR `p2` = '96317' OR `p3` = '96317' OR `p4` = '96317' OR `p5` = '96317' OR `p6` = '96317' OR `p7` = '96317' OR `p8` = '96317' OR `p9` = '96317' ORDER BY `id` ASC;


Затем убрал ордер и стало ровно в ровно строчек..:
Код: sql
1.
2.
3.
# Query_time: 6.640310  Lock_time: 0.000237 Rows_sent: 1051346  Rows_examined: 1051346
SET timestamp=1538167823;
SELECT `id`, `currency`, `pp1` AS `profit`, `psd1` AS `isSD`, `handLimit` FROM `ps_hands` WHERE `p1` = '96317' OR `p2` = '96317' OR `p3` = '96317' OR `p4` = '96317' OR `p5` = '96317' OR `p6` = '96317' OR `p7` = '96317' OR `p8` = '96317' OR `p9` = '96317';


Затем все вернул обратно:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
# Query_time: 6.900837  Lock_time: 0.000485 Rows_sent: 1051346  Rows_examined: 3154038
SET timestamp=1538167901;
SELECT `id`, `currency`, `pp1` AS `profit`, `psd1` AS `isSD`, `handLimit` FROM `ps_hands` WHERE `p1` = '96317'
UNION ALL (SELECT `id`, `currency`, `pp2` AS `profit`, `psd2` AS `isSD`, `handLimit` FROM `ps_hands` WHERE `p2` = '96317') 
UNION ALL (SELECT `id`, `currency`, `pp3` AS `profit`, `psd3` AS `isSD`, `handLimit` FROM `ps_hands` WHERE `p3` = '96317') 
UNION ALL (SELECT `id`, `currency`, `pp4` AS `profit`, `psd4` AS `isSD`, `handLimit` FROM `ps_hands` WHERE `p4` = '96317') 
UNION ALL (SELECT `id`, `currency`, `pp5` AS `profit`, `psd5` AS `isSD`, `handLimit` FROM `ps_hands` WHERE `p5` = '96317') 
UNION ALL (SELECT `id`, `currency`, `pp6` AS `profit`, `psd6` AS `isSD`, `handLimit` FROM `ps_hands` WHERE `p6` = '96317') 
UNION ALL (SELECT `id`, `currency`, `pp7` AS `profit`, `psd7` AS `isSD`, `handLimit` FROM `ps_hands` WHERE `p7` = '96317') 
UNION ALL (SELECT `id`, `currency`, `pp8` AS `profit`, `psd8` AS `isSD`, `handLimit` FROM `ps_hands` WHERE `p8` = '96317') 
UNION ALL (SELECT `id`, `currency`, `pp9` AS `profit`, `psd9` AS `isSD`, `handLimit` FROM `ps_hands` WHERE `p9` = '96317') 
ORDER BY `id` ASC;


И результат, как из этого видно - юнионы быстрее, даже с ордером.. Эх.
Спасибо за помощь. Не знал. А вам надо идти в майкрософт работать)
...
Рейтинг: 0 / 0
Скорость выполнения запроса (Большая таблица)
    #39710179
8POWER-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Попытался еще поднастроить my.cnf , с помощью mysqltuner но долго думав понял, что тут и я болван и тюнер. Т.к. он не знает, какая у меня непростая задача) а я потому, что боюсь сервер скоро сгорит от того, что я "типо" настроил.. Ха-ха.
...
Рейтинг: 0 / 0
5 сообщений из 30, страница 2 из 2
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Скорость выполнения запроса (Большая таблица)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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