как вставить / обновить / удалить столбцы с индексом? - PullRequest
1 голос
/ 21 сентября 2011

Мне пришлось проиндексировать некоторые из моих ячеек в нескольких таблицах для повышения скорости.

Теперь, как мне следует изменить мои запросы вставки / обновления / удаления и т. Д., Чтобы убедиться, что индексация работает?

Чточто именно я должен делать, и что произойдет, если я просто не сделаю ничего особенного?

Должен ли я просто автоматизировать переиндексацию столбцов каждый час?

Ответы [ 3 ]

2 голосов
/ 21 сентября 2011

СУБД MySQL будет обрабатывать индексацию за вас.DELETE s, INSERT s и UPDATE s изменят индекс без каких-либо действий с вашей стороны.Переиндексация их никогда не должна стать необходимой.

0 голосов
/ 10 ноября 2014

МОЙ тестовый код: Разница 42 с и 2 мин.

mysql> UPDATE  big_table SET id = INSERT(id,1,5,'');
Query OK, 2835999 rows affected (42.69 sec)
Rows matched: 2835999  Changed: 2835999  Warnings: 0

mysql> ALTER TABLE big_table ADD INDEX id(id);
Query OK, 2835999 rows affected (5.75 sec)
Records: 2835999  Duplicates: 0  Warnings: 0

mysql> UPDATE  big_table SET id = INSERT(id,1,4,'');
Query OK, 2835999 rows affected, 2856 warnings (2 min 1.49 sec)
Rows matched: 2835999  Changed: 2835999  Warnings: 2856
0 голосов
/ 21 сентября 2011

База данных будет поддерживать ваши индексы в актуальном состоянии.

Вам не нужно менять свои запросы. СУБД определит, когда использовать индекс.

Чтобы убедиться, что СУБД использует индексы в ваших SELECT / UPDATE запросах, используйте EXPLAIN (Для запросов UPDATE просто установите выражение WHERE на SELECT для EXPLAIN)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...