|
|
|
UPDATE в большой таблице
|
|||
|---|---|---|---|
|
#18+
Доброго времени суток, пытаюсь разобраться с обновлением записей в большой таблице, искал по форуму, не смог найти ничего подходящего. Есть таблица InnoDB, в ней примерно 10 млн. записей. структура таблицы простая: id int name varchar 16 status int 11 Сделал индекс на name,status (normal, btree). Код: sql 1. выполняется в принципе быстро 4 сек. А вот Код: sql 1. Выполняется крайне долго, изначально 30 сек, когда создал индекс на name, то время сократилось до 14-19 сек, но это всё равно недостаточно быстро, собственно вопрос, можно ли как-то ускорить выполнение UPDATE запроса? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2015, 20:08:41 |
|
||
|
UPDATE в большой таблице
|
|||
|---|---|---|---|
|
#18+
Сколько всего записей в таблице и сколько подпадает под условие name='something' ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2015, 20:38:14 |
|
||
|
UPDATE в большой таблице
|
|||
|---|---|---|---|
|
#18+
Очень интересно получилось: Код: sql 1. - выполняется долго. Код: sql 1. - выполняется доли секунды. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2015, 20:41:18 |
|
||
|
UPDATE в большой таблице
|
|||
|---|---|---|---|
|
#18+
в таблице 10 млн записей, под условие попадает ровно 1 строка, name не повторяется ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2015, 20:42:53 |
|
||
|
UPDATE в большой таблице
|
|||
|---|---|---|---|
|
#18+
BoDRbIiОчень интересно получилось: Код: sql 1. - выполняется долго. Код: sql 1. - выполняется доли секунды.Потому что надо использовать именно тот тип данных, который нужно, а не полагаться на неявное преобразование типов. Поле name какого типа? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2015, 22:13:53 |
|
||
|
UPDATE в большой таблице
|
|||
|---|---|---|---|
|
#18+
miksoft, varchar ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2015, 22:17:07 |
|
||
|
UPDATE в большой таблице
|
|||
|---|---|---|---|
|
#18+
BoDRbIimiksoft, varcharВот поэтому и сравнивать нужно со строковым литералом, а не с числовым. Т.к. в противном случае вы заставляете MySQL сканировать всю таблицу, преобразовывать поле в число и сравнивать с заданным числом. Конечно, индекс тут не поможет, т.к. нужные значения могут быть разбросаны в произвольных местах индекса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2015, 22:20:29 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=39006373&tid=1832950]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
37ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
41ms |
get tp. blocked users: |
1ms |
| others: | 217ms |
| total: | 329ms |

| 0 / 0 |
