Встроенные запросы против хранимых процедур для использования в PHP - PullRequest
3 голосов
/ 02 февраля 2010

Я использовал встроенные операторы запросов в моей модели моего приложения ... В настоящее время многие люди говорят, что хранимые процедуры - это хорошая практика ... У меня следующий вопрос

  • Как использовать хранимые процедуры MySql в PHP Codeigniter?

  • Каковы преимущества использования хранимых процедур Mysql?

Ответы [ 2 ]

2 голосов
/ 02 февраля 2010

Хранимые процедуры - это инструмент, как и все остальное (триггеры, представления и т. Д.), И его следует использовать только там, где он подходит. Принятие каждого имеющегося у вас встроенного оператора SQL и его преобразование в хранимую процедуру не является правильным направлением.

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

Единственный проект, над которым я работал, который использовал SP, был большой системой учета, где сотни тысяч записей приходилось часто обновлять с очень небольшим прямым вводом кода. Мы просто сказали, когда начинать, и не нуждались в передаче значений в SP (хотя это возможно). Это был, однако, только один или два из тысяч встроенных запросов, которые мы использовали в системе. Я не говорю, что это единственное место, где их можно использовать, но я создал несколько очень больших систем, и у меня еще не было «НУЖДЫ», чтобы использовать их в других местах.

По моему мнению, было бы лучше потратить ваше время на изучение написания высокоскоростных запросов с небольшим перетаскиванием и использовать EXPLAIN для проверки правильности настройки индексов. Я думаю, что если у вас нет ОЧЕНЬ конкретной потребности в хранимых процедурах, вы найдете их очень недружелюбными для каждодневного использования.

1 голос
/ 14 декабря 2011

Я не говорю, что хранимые процедуры - это обязательно ответ на все вопросы. Но использование курсоров не обязательно. Я согласен с тем, что курсоры являются помехой (медленной) и поэтому должны использоваться только тогда, когда это абсолютно необходимо. По моему опыту, курсоры использовались только в плохо спроектированных (ненормализованных) базах данных, обычно потому, что обычные запросы не могут извлекать данные по мере необходимости.

Моя история связана с .NET, где я бы сказал, что хранимые процедуры - это лучший способ сделать запрос к базе данных. Я думаю, что это отчасти потому, что ASP.NET предназначен для облегчения их. Он обеспечивает отличное разделение между данными и кодом - вы пишете хранимую процедуру для возврата нужных вам данных, а затем проверяете их. Сейчас я только начинаю заниматься php, поэтому я не могу рекомендовать лучшие практики для этого. Вероятно, это зависит от специфики вашего проекта (масштаб, сложность и т. Д.).

Но не сбрасывайте со счетов хранимые процы из-за дезинформации. Хранимые процедуры не обязательно означают, что вы должны использовать медленные, дорогостоящие курсоры. За исключением установки выходных параметров, они используют практически все те же операторы и логику, что и любой SQL-запрос. Там нет особой "грубой" логики, которую вы должны изучить.

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