
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
13.07.2015, 20:08:41
|
|||
|---|---|---|---|
|
|||
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:38:14
|
|||
|---|---|---|---|
UPDATE в большой таблице |
|||
|
#18+
Сколько всего записей в таблице и сколько подпадает под условие name='something' ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
13.07.2015, 20:41:18
|
|||
|---|---|---|---|
|
|||
UPDATE в большой таблице |
|||
|
#18+
Очень интересно получилось: Код: sql 1. - выполняется долго. Код: sql 1. - выполняется доли секунды. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
13.07.2015, 20:42:53
|
|||
|---|---|---|---|
|
|||
UPDATE в большой таблице |
|||
|
#18+
в таблице 10 млн записей, под условие попадает ровно 1 строка, name не повторяется ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
13.07.2015, 22:13:53
|
|||
|---|---|---|---|
UPDATE в большой таблице |
|||
|
#18+
BoDRbIiОчень интересно получилось: Код: sql 1. - выполняется долго. Код: sql 1. - выполняется доли секунды.Потому что надо использовать именно тот тип данных, который нужно, а не полагаться на неявное преобразование типов. Поле name какого типа? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
13.07.2015, 22:17:07
|
|||
|---|---|---|---|
|
|||
UPDATE в большой таблице |
|||
|
#18+
miksoft, varchar ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
13.07.2015, 22:20:29
|
|||
|---|---|---|---|
UPDATE в большой таблице |
|||
|
#18+
BoDRbIimiksoft, varcharВот поэтому и сравнивать нужно со строковым литералом, а не с числовым. Т.к. в противном случае вы заставляете MySQL сканировать всю таблицу, преобразовывать поле в число и сравнивать с заданным числом. Конечно, индекс тут не поможет, т.к. нужные значения могут быть разбросаны в произвольных местах индекса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/search_topic.php?author=progi2007&author_mode=last_posts&do_search=1]: |
0ms |
get settings: |
4ms |
get forum list: |
8ms |
get settings: |
6ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
49ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
35ms |
get tp. blocked users: |
1ms |
| others: | 698ms |
| total: | 834ms |

| 0 / 0 |
