отдельные запросы функций SQL?

#php #sql #function

#php #sql #функция

Вопрос:

Я использую комбинацию php и MySQL. В моем случае я использую два запроса (по одному ‘select’ и ‘insert’) для действия, иногда 3 запроса. Это будет делаться очень часто разными пользователями.

Я использую функцию mysql_query отдельно для выполнения запросов. Это хорошо или лучше использовать функцию SQL, которая выполняет все запросы. Я хочу знать, что лучше с точки зрения производительности.

Ответ №1:

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

Ответ №2:

Если вы используете mysqli расширение, вы можете использовать multi_query :

http://php.net/manual/en/mysqli.multi-query.php

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

Комментарии:

1. это мой случай. второй запрос будет выполнен только на основе результата первого запроса. итак, что лучше — выполнять запросы отдельно или писать функцию sql

2. Затем выполните их отдельно. Вам нужно проверить на ошибку, что первая функция действительно прошла, прежде чем выполнять вызовы, которые зависят от нее.

3. Если одно зависит от другого, вы должны выполнять их отдельно, потому что вам нужно проверять обратную связь на программном уровне. редактировать Хотя может быть rollback on error опция для функций с несколькими запросами.

Ответ №3:

Было бы полезно, если бы вы могли показать конкретные примеры — прямо сейчас все это очень гипотетично. Однако:

Если вы можете объединить операции в один запрос, это самый быстрый вариант. Например:

 insert into tableA
select x, y, z
from tableB
where Foo = Bar
  

Если вам нужно выполнить некоторую обработку результатов инструкции select, вы можете создать хранимую процедуру для выполнения обработки. Это позволяет избежать повторной отправки данных обратно на ваш PHP-сервер, что должно дать преимущество в производительности — однако вполне может быть, что PHP является лучшим / более быстрым языком для выполнения обработки, чем хранимая процедура. Например, если вам нужно манипулировать текстом, я бы сделал это на PHP.