Оптимизация оператора удаления MySQL
У меня есть несколько запросов на удаление для довольно большой таблицы (~ 100 ГБ), и я хочу максимально оптимизировать их:
delete from table1 where column1 < date_sub(now(), interval 100 hour);
column1 является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? или объединенный первичный ключ сделает это?
Я думаю, это довольно простые вопросы, но я не смог найти однозначного ответа, специфичного для моей ситуации, поэтому любая помощь будет принята с благодарностью!