В системах SQL, которые поддерживают хранимые процедуры, если вы не используете определенные функции, sproc часто будет храниться на сервере в скомпилированной и оптимизированной форме. Когда текст SQL встраивается / строится как строка в PHP или другой веб-странице, текст должен быть отправлен в БД и скомпилирован перед выполнением. Это не только менее эффективно в базе данных, но и заставляет интерпретатор PHP (или что-то еще) выполнять большую работу перед отправкой, а веб-сервер - работать для извлечения большей страницы. Поэтому мне интересно, почему я никогда не видел хранимых процедур, используемых в каком-либо из нескольких крупных веб-приложений с открытым исходным кодом, на которые я смотрел, даже тех, которые поддерживают ТОЛЬКО mySQL или MS SQL Server (оба из которых имеют хранимые процедуры).

2 ответа2

1

Хранимые процедуры привязывают вас к конкретной платформе БД. Например, код, написанный для MySQL, не будет сразу запускаться на SQL Server. Это делает ваше приложение менее переносимым. Конечно, есть и другая история: для достижения переносимости также потребуется использовать только стандартные типы данных и не полагаться на функции, специфичные для платформы. Что на практике не всегда так.

0

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

Я не знаю, что такое SQL Server, но что касается MySQL, многие общие хостинги вообще не позволяют создавать хранимые процедуры и некоторые другие функции.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .