Большое количество "логических операций чтения" при удалении одной строки

При удалении строки с помощью ее PrimaryKey из таблицы я получаю около 44472 логических операций чтения. Теперь в таблице есть 5-6 дочерних таблиц, которые связывают свои ForeignKeys с PK таблицы, из которой я хочу удалить.

Я не уверен, что нужно сделать, чтобы улучшить производительность удаления.

Какие-либо предложения?

Изменить: я добавил план запроса для удаления

http://img384.imageshack.us/img384/6255/deleteexecutionplan.png

Изменить: я нашел решение (не уверен, что это идеальное решение)- это в ответ ниже.

3 ответа

Решение

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

Есть ли у вас ограничения ФК?

Возможные варианты:

  • Добавьте индексы к столбцам FK в дочерних таблицах.
  • Удалите ограничение (что может привести к появлению потерянных строк).
  • Попробуйте уменьшить количество дочерних таблиц.

Посмотрите на план запроса для удаления одной строки.

Я думаю, вы обнаружите, что сканирование таблицы выполняется на одной или нескольких "дочерних" таблицах. Если это так, рассмотрите возможность включения индекса для ForeignKey в эти дочерние таблицы.

(В противном случае, пожалуйста, добавьте план запроса к вашему вопросу)

Другие вопросы по тегам