powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Запрос в таблицу. Copying to tmp table больше 10-20 секунд
3 сообщений из 3, страница 1 из 1
Запрос в таблицу. Copying to tmp table больше 10-20 секунд
    #38522633
ivanivs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте.
Столкнулся с проблемой.
Есть таблица, сейчас 3.5 милиона записей, дальше будет расти до 10М и остановится...

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
CREATE TABLE IF NOT EXISTS `paramsSelectValuesInherit` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `valuesId` int(10) unsigned NOT NULL,
  `inherit` int(10) unsigned DEFAULT NULL,
  `inherit2` int(10) unsigned DEFAULT NULL,
  `interhit3` int(10) unsigned DEFAULT NULL,
  `interhit4` int(10) unsigned DEFAULT NULL,
  PRIMARY KEY (`id`,`valuesId`),
  UNIQUE KEY `id_UNIQUE` (`id`),
  KEY `fk_table1_paramsSelectValues3` (`valuesId`),
  KEY `fk_paramsSelectValuesInherit_newAutoline_paramsSe1` (`inherit`),
  KEY `fk_paramsSelectValuesInherit_newAutoline_paramsSe2` (`inherit2`),
  KEY `fk_paramsSelectValuesInherit_newAutoline_paramsSe3` (`interhit3`),
  KEY `fk_paramsSelectValuesInherit_newAutoline_paramsSe4` (`interhit4`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;



Запрос:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
SELECT
            `paramsSelectValues`.`id`, `paramsTranslateValue`.`text`
FROM `paramsSelectValues`
  JOIN `paramsTranslateValue` ON `paramsTranslateValue`.`valuesId` = `paramsSelectValues`.`id`
  JOIN `paramsSelectValuesInherit` ON `paramsSelectValues`.`id` = `paramsSelectValuesInherit`.`valuesId` 
WHERE
        (`paramsSelectValuesInherit`.`inherit` = 14252 
          OR `paramsSelectValuesInherit`.`inherit` = 14256 
          OR `paramsSelectValuesInherit`.`inherit` = 14258 
          OR `paramsSelectValuesInherit`.`inherit` = 14260 
          OR `paramsSelectValuesInherit`.`inherit` = 14261 
          OR `paramsSelectValuesInherit`.`inherit` = 14264 
          OR `paramsSelectValuesInherit`.`inherit` = 14265 
          OR `paramsSelectValuesInherit`.`inherit` = 14268)
         AND `paramsSelectValues`.`paramsId` = '26'
        AND `paramsTranslateValue`.`langId` = '1'
        AND `paramsSelectValuesInherit`.`inherit2` = '14225'
        AND `paramsSelectValuesInherit`.`interhit3` = '14238'
GROUP by `paramsSelectValues`.`id`
ORDER by CAST(`paramsTranslateValue`.`text` AS DECIMAL)


Профайлинг:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
+----------------------+-----------+
| Status               | Duration  |
+----------------------+-----------+
| starting             |  0.000190 |
| checking permissions |  0.000012 |
| checking permissions |  0.000006 |
| checking permissions |  0.000011 |
| Opening tables       |  0.000043 |
| System lock          |  0.000019 |
| init                 |  0.000056 |
| optimizing           |  0.000038 |
| statistics           |  0.054937 |
| preparing            |  0.000124 |
| Creating tmp table   |  0.000703 |
| Sorting for group    |  0.000024 |
| executing            |  0.000010 |
| Copying to tmp table | 13.237371 |
| Sorting result       |  0.000079 |
| Sending data         |  0.000049 |
| end                  |  0.000008 |
| removing tmp table   |  0.000126 |
| end                  |  0.000011 |
| query end            |  0.000009 |
| closing tables       |  0.000049 |
| freeing items        |  0.000046 |
| logging slow query   |  0.000009 |
| logging slow query   |  0.000079 |
| cleaning up          |  0.000011 |
+----------------------+-----------+

Профайлинг при отключенном кеше. Если кеш включить получается что Copying to tmp table исполняется где-то в пределах 0.000110, но storing result in query cache начинает переваливать за 10-20 секунд.
Любые "игры" с параметрами кеша и размера темповых таблиц никакого результата не дают.

Подскажите что можно сделать?
...
Рейтинг: 0 / 0
Запрос в таблицу. Copying to tmp table больше 10-20 секунд
    #38522738
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
покажите план запроса.
и сколько он выбирает записей?
...
Рейтинг: 0 / 0
Запрос в таблицу. Copying to tmp table больше 10-20 секунд
    #38523070
ivanivs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoft,

Спасибо. Разобрался...

Проблема в том, что по таблице с 3.5 милионами, запрос затрагивал только 500 записей, а таблицу paramsSelectValues перегрибал полностью, исправил при помощи USE INDEX (id).

Спасибо.
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Запрос в таблицу. Copying to tmp table больше 10-20 секунд
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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