|
|
|
Медленный запрос. Как ускорить?
|
|||
|---|---|---|---|
|
#18+
МультиТабл апдейт... простейший случай в примере внизу по ссылке. в двухсловах: формируем SELECT заменяем на UPDATE добавляем SET FIELD1='НОВОЕ ЗНАЧЕНИЕ' пример Код: sql 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.10.2014, 15:07:59 |
|
||
|
Медленный запрос. Как ускорить?
|
|||
|---|---|---|---|
|
#18+
Модератор: Флуд и оффтоп зачищен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.10.2014, 18:18:50 |
|
||
|
Медленный запрос. Как ускорить?
|
|||
|---|---|---|---|
|
#18+
Что-то я косячу… Код: sql 1. 2. 3. 4. 5. 6. 7. Пишет: #1242 - Subquery returns more than 1 row Отдельно Код: sql 1. 2. 3. выполняется, а в целом запросе нет. что не так? Вот таблицы: CREATE TABLE IF NOT EXISTS `k-ts` ( `ids` int(10) unsigned zerofill NOT NULL AUTO_INCREMENT, `s` varchar(60) NOT NULL, `kol` mediumint(8) unsigned NOT NULL COMMENT 'Количество', `f` tinyint(3) unsigned NOT NULL COMMENT 'Состояние', PRIMARY KEY (`ids`), UNIQUE KEY `s` (`s`), KEY `f` (`f`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Слова на кириллице' AUTO_INCREMENT=5072371 ; CREATE TABLE IF NOT EXISTS `k-t_s` ( `id_sv` int(10) unsigned zerofill NOT NULL AUTO_INCREMENT, `id_n` int(10) unsigned zerofill NOT NULL, `id_s` int(10) unsigned zerofill NOT NULL, PRIMARY KEY (`id_sv`), KEY `id_s` (`id_s`), KEY `id_n` (`id_n`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Связи для кириллицы' AUTO_INCREMENT=5066222 ; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.10.2014, 18:41:16 |
|
||
|
Медленный запрос. Как ускорить?
|
|||
|---|---|---|---|
|
#18+
andrejkОтдельно Код: sql 1. 2. 3. выполняется, а в целом запросе нет. что не так? английским по белому написано - andrejkSubquery returns more than 1 row ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.10.2014, 19:00:27 |
|
||
|
Медленный запрос. Как ускорить?
|
|||
|---|---|---|---|
|
#18+
Сделал так: Код: sql 1. 2. 3. 4. 5. 6. PHPmyAdmin уже минут 10-15 думает… Это нормально? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.10.2014, 19:38:45 |
|
||
|
Медленный запрос. Как ускорить?
|
|||
|---|---|---|---|
|
#18+
что-то типа: Код: sql 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.10.2014, 19:46:12 |
|
||
|
Медленный запрос. Как ускорить?
|
|||
|---|---|---|---|
|
#18+
andrejkСделал так: Код: sql 1. 2. 3. 4. 5. 6. PHPmyAdmin уже минут 10-15 думает… Это нормально? нет, не нормально, у вас ошибка в СКЛ, посмотрите мой вариант. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.10.2014, 19:47:25 |
|
||
|
Медленный запрос. Как ускорить?
|
|||
|---|---|---|---|
|
#18+
javajdbcчто-то типа: Код: sql 1. 2. 3. 4. 5. 6. Попробовал ваш запрос, вот что выдало через несколько минут: Lock wait timeout exceeded; try restarting transaction ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.10.2014, 20:03:09 |
|
||
|
Медленный запрос. Как ускорить?
|
|||
|---|---|---|---|
|
#18+
andrejkjavajdbcчто-то типа: Код: sql 1. 2. 3. 4. 5. 6. Попробовал ваш запрос, вот что выдало через несколько минут: Lock wait timeout exceeded; try restarting transaction ок, тогда сделайте уж совсем прямолинейно: (кстату, у вас есть индекс на таблице k-t_s на поле `id_s` ? если не ОБЯЗАТЕЛЬНО сделайте) сначала: create table temp_01 select id_s, count(1) kol from k-t_s; потом CREATE INDEX idx_temp_01_ids ON temp_01 (id_s); потом, update `k-ts` ts set ts.`kol` = (select t1.kol from temp_01 t1 where t1.id_s = ts.id_s) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.10.2014, 20:52:18 |
|
||
|
Медленный запрос. Как ускорить?
|
|||
|---|---|---|---|
|
#18+
блин, ну вечно я тороплюсь, вот так надо create table temp_01 select id_s, count(1) kol from k-t_s GROUP BY id_s; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.10.2014, 20:55:32 |
|
||
|
Медленный запрос. Как ускорить?
|
|||
|---|---|---|---|
|
#18+
javajdbcок, тогда сделайте уж совсем прямолинейно: (кстату, у вас есть индекс на таблице k-t_s на поле `id_s` ? если не ОБЯЗАТЕЛЬНО сделайте) Я так понял, первичный ключ, которым это поле является не в счёт. Сделать ещё индекс Код: sql 1. ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.10.2014, 21:15:28 |
|
||
|
Медленный запрос. Как ускорить?
|
|||
|---|---|---|---|
|
#18+
andrejkjavajdbcок, тогда сделайте уж совсем прямолинейно: (кстату, у вас есть индекс на таблице k-t_s на поле `id_s` ? если не ОБЯЗАТЕЛЬНО сделайте) Я так понял, первичный ключ, которым это поле является не в счёт. Сделать ещё индекс Код: sql 1. ? если ид_с НЕ первый в наборном ключе, то надо сделать отдельный индекс. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.10.2014, 21:24:15 |
|
||
|
Медленный запрос. Как ускорить?
|
|||
|---|---|---|---|
|
#18+
javajdbc если ид_с НЕ первый в наборном ключе, то надо сделать отдельный индекс. упс, я подвис в терминологии… Что значит «НЕ первый в наборном ключе» и «отдельный индекс»? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.10.2014, 21:28:46 |
|
||
|
Медленный запрос. Как ускорить?
|
|||
|---|---|---|---|
|
#18+
andrejkjavajdbcесли ид_с НЕ первый в наборном ключе, то надо сделать отдельный индекс. упс, я подвис в терминологии… Что значит «НЕ первый в наборном ключе» и «отдельный индекс»? если надо связку по полю А, то наборный индекс (А, Б) вполне подойдет, а наборный индекс (Б,А) не поможет -- А не на первом месте. И надо создать отдельный индекс по (А). Вообше все такие вопросы надо смотреть через ЕКСПЛЕЙН, там будет видно какие индексы есть и какие сработали , или не сработали. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.10.2014, 22:29:34 |
|
||
|
Медленный запрос. Как ускорить?
|
|||
|---|---|---|---|
|
#18+
Спасибо. Это вы, наверное, про СОСТАВНОЙ индекс имели ввиду? А то я термин «наборный» впервые слышу) Ну а по затыку, который с вашим вариантом запроса вышел: Lock wait timeout exceeded; try restarting transaction это на стороне хостера ограничения какие-то? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.10.2014, 23:52:32 |
|
||
|
Медленный запрос. Как ускорить?
|
|||
|---|---|---|---|
|
#18+
andrejkСпасибо. Это вы, наверное, про СОСТАВНОЙ индекс имели ввиду? А то я термин «наборный» впервые слышу) Ну а по затыку, который с вашим вариантом запроса вышел: Lock wait timeout exceeded; try restarting transaction это на стороне хостера ограничения какие-то? да, составной == наборный. Я так думаю что апдейт хотел залочить таблицу а ему кто-то дал это сдеалть.... можно просто повторить снова и снова. Индекс на к-т-с ид-с надо полюбому. То что я предложил с временой таблицей -- вопшемто тоже самое, просто разбито на отдельны шаги -- при этом локов может быть меньше и больше шансов на успех при громадных данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.10.2014, 00:15:28 |
|
||
|
Медленный запрос. Как ускорить?
|
|||
|---|---|---|---|
|
#18+
С ума сойти. Попробовал ещё раз вот это: Код: sql 1. 2. 3. 4. 5. 6. Всё за доли секунды прошло. вчера звонил хостеру, выяснилось, что у меня там 6 часов какой-то запрос висел. Наверное он и не давал обновить таблицу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.10.2014, 13:50:39 |
|
||
|
Медленный запрос. Как ускорить?
|
|||
|---|---|---|---|
|
#18+
andrejkС ума сойти. Попробовал ещё раз вот это: Код: sql 1. 2. 3. 4. 5. 6. Всё за доли секунды прошло. вчера звонил хостеру, выяснилось, что у меня там 6 часов какой-то запрос висел. Наверное он и не давал обновить таблицу. ок, хорошо. На всякий такой будуший случай посмотрите команду: SHOW PROCESSLIST: и KILL <process_id>; Этими командами вы сами сможете выловить зависшие квери и убить по номеру процесса (если то надо). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.10.2014, 22:04:11 |
|
||
|
Медленный запрос. Как ускорить?
|
|||
|---|---|---|---|
|
#18+
Большое спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2014, 00:57:59 |
|
||
|
Медленный запрос. Как ускорить?
|
|||
|---|---|---|---|
|
#18+
andrejkСделал так: Код: sql 1. 2. 3. 4. 5. 6. PHPmyAdmin уже минут 10-15 думает… Это нормально? \да ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2014, 09:32:22 |
|
||
|
Медленный запрос. Как ускорить?
|
|||
|---|---|---|---|
|
#18+
MasterZivandrejkСделал так: Код: sql 1. 2. 3. 4. 5. 6. PHPmyAdmin уже минут 10-15 думает… Это нормально? \да Сори, должно быть Код: sql 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2014, 09:35:08 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=38788597&tid=1834013]: |
0ms |
get settings: |
7ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
37ms |
get topic data: |
6ms |
get forum data: |
1ms |
get page messages: |
32ms |
get tp. blocked users: |
1ms |
| others: | 192ms |
| total: | 290ms |

| 0 / 0 |
