Почему запросы на основе реляционных множеств лучше, чем курсоры? - PullRequest
32 голосов
/ 23 августа 2008

При написании запросов к базе данных в чем-то вроде TSQL или PLSQL у нас часто есть выбор итерации по строкам с курсором для выполнения задачи или создание одного оператора SQL, который выполняет одну и ту же работу одновременно.

Кроме того, у нас есть выбор: просто извлечь большой набор данных обратно в наше приложение и затем обрабатывать их построчно, с помощью C #, Java, PHP или чего-либо еще.

Почему лучше использовать запросы на основе множеств? Какая теория стоит за этим выбором? Что является хорошим примером решения на основе курсора и его реляционного эквивалента?

Ответы [ 11 ]

0 голосов
/ 23 августа 2008

Идея, лежащая в основе предпочтения выполнения работы в запросах, заключается в том, что ядро ​​базы данных может оптимизировать его путем переформулирования. Вот почему вы хотите запустить EXPLAIN в своем запросе, чтобы увидеть, что на самом деле делает БД . (например, использование индексов, размеров таблиц и иногда даже знаний о распределении значений в столбцах.)

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

О, еще одной причиной могут быть ограничения: увеличение уникального столбца на один может быть приемлемо, если ограничения проверяются после всех обновлений, но генерирует коллизию, если выполняется по одному.

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