Оптимизация оператора удаления MySQL

у меня есть некоторые запросы на удаление для выполнения против некоторой довольно огромной таблицы (~100 ГБ), и я хочу оптимизировать их как можно больше:

delete from table1 where column1 < date_sub(now(), interval 100 hour);

column1 является a datetime столбец, я предполагаю, что создание индекса для этого столбца ускорит удаления. помимо этого, что-нибудь я могу сделать здесь? будет использование date_sub() функция замедляет запрос? я должен вычислить то значение прежде, чем выполнить запрос?

delete from table2 where column2 = x;

column2 является первичным ключом для table2, таким образом, это уже - индекс согласно mysql документации. мой вопрос: индексный вид PRIMARY, тот же самый как INDEX? сделайте я должен сделать другой индекс вида INDEX для ускорения?

delete from table3 where column3 = y;

table3 имеет составной первичный ключ, который является column3 и column4. таким образом, у меня есть индекс первичного ключа, но так как запрос на удаление не использует column4, я должен сделать отдельный индекс только для column3? или объединенный первичный ключ сделал бы это?

я предполагаю, что это довольно основные вопросы, но я не мог найти определенный ответ характерным для моей ситуации, таким образом, любая справка будет цениться!

5
задан Brian Tompsett - 汤莱恩 4 July 2015 в 13:37
поделиться