Курсоры на MySQL-хорошие или плохие


Я всегда слышал, что люди говорят плохо об использовании курсоров, и это особенно в Microsoft SQL Server, так как они очень медленные. Так ли обстоит дело и с курсорами на MySQL? Курсоры в MySQL также снижают производительность? Может кто-нибудь дать совет по использованию курсоров в MySQL?

3 6

3 ответа:

Большинство современных баз данных (включая MySQL) предназначены для выполнения операций на основе наборов. Проблема с курсорами заключается в том, что они выполняют операции на основе строк (или процедурные). Из-за этого вы почти всегда будете видеть хиты производительности, когда вы используете курсоры для выполнения работы, которая может быть выполнена без курсоров на современной СУБД.

Взгляните на Эту статью, которая делает приличную работу, проходя через два. Он написан с учетом SQL Server, но большинство концепций применимы.

Просто создайте и заполните временную таблицу. Так или иначе, большинство РСУБД реализует курсоры.

Курсоры по своей природе являются итеративными-они определенно будут медленнее, независимо от типа базы данных. Поэтому вы должны сделать все возможное, чтобы избежать их и попытаться найти решения с помощью SQL-запросов. Однако они существуют для задач, которые не могут быть решены с помощью запросов , поэтому используйте их только в случае крайней необходимости.