Большое количество "логических операций чтения" при удалении одной строки
При удалении строки с помощью ее PrimaryKey из таблицы я получаю около 44472 логических операций чтения. Теперь в таблице есть 5-6 дочерних таблиц, которые связывают свои ForeignKeys с PK таблицы, из которой я хочу удалить.
Я не уверен, что нужно сделать, чтобы улучшить производительность удаления.
Какие-либо предложения?
Изменить: я добавил план запроса для удаления
http://img384.imageshack.us/img384/6255/deleteexecutionplan.png
Изменить: я нашел решение (не уверен, что это идеальное решение)- это в ответ ниже.
3 ответа
Этот ответ решил проблему, теперь удаляет работу как брелок. Я не уверен, есть ли какие-либо недостатки, о которых я должен знать.
Есть ли у вас ограничения ФК?
Возможные варианты:
- Добавьте индексы к столбцам FK в дочерних таблицах.
- Удалите ограничение (что может привести к появлению потерянных строк).
- Попробуйте уменьшить количество дочерних таблиц.
Посмотрите на план запроса для удаления одной строки.
Я думаю, вы обнаружите, что сканирование таблицы выполняется на одной или нескольких "дочерних" таблицах. Если это так, рассмотрите возможность включения индекса для ForeignKey в эти дочерние таблицы.
(В противном случае, пожалуйста, добавьте план запроса к вашему вопросу)