Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Каковы различия в производительности между красноречивыми и необработанными запросами SQL


Каковы различия в производительности между красноречивыми и необработанными запросами SQL


Различия в производительности между красноречивым ORM Laravel и RAW SQL -запросами являются значительными и связаны главным образом от накладных расходов абстракции и обработки в красноречивых по сравнению с прямым выполнением необработанного SQL.

Производительные накладные расходы в красноречивом ORM

Elofent обеспечивает картирование объектно-релационного отображения, который переводит записи базы данных в объекты PHP. Эта абстракция добавляет удобство и читаемость, но вводит несколько затрат на производительность:

- Повышенное использование процессора и памяти: красноречивая создает объект для каждой записи базы данных, полученной или манипулированной, которая потребляет больше ресурсов памяти и процессора, чем необработанный SQL, который непосредственно работает на строках данных без преобразования объектов [3] [6].

- Медленное время выполнения: из -за дополнительной обработки красноречивые запросы обычно занимают больше времени. Это особенно выражено в массовых операциях, таких как вставка или обновление тысяч записей, где накладные расходы эласкорда значительно накапливаются [3] [6].

- Генерация комплексных запросов: для операций, включающих несколько соединений таблицы, эласкорант часто генерирует несколько запросов SQL или сложных запросов, которые менее оптимизированы, чем один хорошо продуманный запрос соединения SQL. Это приводит к более длительному времени выполнения в выбранных операциях с несколькими соединениями [3].

Сырые преимущества SQL

RAW SQL -запросы обходят слой ORM, отправляя прямые команды SQL в базу данных. Это приводит к:

- Более быстрое выполнение: необработанные запросы SQL выполняются быстрее, потому что они избегают накладных расходов на создание объектов и слои перевода. Тесты производительности показывают необработанные SQL, опережая красноречивую в вставке, обновлении и выборе операций, с растущими различиями по мере увеличения объема данных или сложности запроса [3] [6].

- Лучше для объемных и сложных операций: необработанный SQL более эффективен для объемных вставок/обновлений и сложных запросов, включающих несколько соединений, поскольку он позволяет точно управлять структурой и оптимизацией запросов [3] [6].

Когда использовать каждый

- Красноречивая ORM: лучше всего подходит для малых и средних приложений с относительно простыми операциями CRUD и меньшими наборами данных. Он повышает производительность разработчиков, читаемость кода, обслуживаемость и функции безопасности, что делает его идеальным, когда производительность необработана не имеет решающего [3] [6].

- RAW SQL: предпочтительный для критических приложений, касающихся эффективности, касающихся больших объемов данных, объемных операций или сложных запросов, где скорость выполнения имеет первостепенное значение. RAW SQL обеспечивает больший контроль и эффективность в этих сценариях [3] [6].

Краткое содержание

В то время как красноречивый ORM предлагает значительные удобства для разработки, он получает измеримый штраф за производительность по сравнению с необработанными запросами SQL. Разница наиболее заметна в крупномасштабных операциях данных и сложных запросах. RAW SQL выполняется быстрее и использует меньше ресурсов, но требует большего ручного управления запросами. Выбор между ними зависит от требований к эффективности приложения и приоритетов развития [3] [6].

Цитаты:
[1] https://www.reddit.com/r/laravel/comments/hezv6m/eloquent_vs_query_builder_vs_sql_performance_test/
[2] https://laravel.io/forum/04-23-2014-eloquent-vs-raw-sql-which-is-reailly-better
[3] https://www.diva-portal.org/smash/get/diva2:1014983/fulltext02
[4] https://stackoverflow.com/questions/14570568/speed-comparison-between-eloquent-orm-query-builder-and-raw-sql-queries
[5] https://www.youtube.com/watch?v=n_rbsojfcau
[6] https://blog.livares.com/comparison-of-performance-between-eloquent-and-raw-query/
[7] https://dev.to/hesamrad/laravel-orm-vs-query-builder-vs-sql-speed-test-4knf
[8] https://stackoverflow.com/questions/38391710/what-are-the-key-diffferences-between-laravels-eloquent-and-query-builder