Есть ли какое-то влияние на скорость запроса SQL 1, возвращающего 3 столбца, или 3 запроса, возвращающего 1 столбец?

Мне интересно о чем-то. Я создал сайт, который интенсивно использует PHP и SQL (Oracle).

Есть ли какое-либо влияние на скорость выполнения 1 запроса, возвращающего несколько столбцов, а затем нескольких запросов, возвращающих 1 столбец.

пример

Customer Name:     <?= dbq("select customer_name from customers where customer_no = $session"); ?>
Customer No:       <?= dbq("select customer_no from customers where customer_no = $session"); ?>
Customer Type:     <?= dbq("select customer_type from customers where customer_no = $session"); ?>

против

Один SQL-запрос возвращает 3 столбца и затем использует их:

Customer Name:     $row1
Customer No:       $row2
Customer Type:     $row3

0

Решение

Один запрос должен быть быстрее. Существуют значительные накладные расходы для каждого запроса: анализ запроса, поиск в таблице и возврат результатов клиенту. Если все ваши значения поступают из одной и той же строки, это будет сделано только один раз, если вы объедините их в один запрос.

0

Другие решения

Да, есть

  • 3 отдельных запроса обязательно пройдут по сети 3 раза и, следовательно, вызовут в 3 раза больше сетевого трафика
  • Они также отличаются, поэтому кеш запросов не будет использоваться. Вам лучше было бы запросить все 3 столбца во всех 3 запросах (но тогда код выглядел бы странно, не так ли)
  • Они также могут попадать на диск 3 раза, хотя я ожидаю, что те же данные уже буферизируются. Конечно, буферы могут быть под давлением. Это, безусловно, может иметь место, если запросы были соединениями или более сложными.
  • Код также не так удобен для чтения — он просто содержит больше символов и не ясно, что используется одна и та же строка данных.
0

Если вы собрали STATISTICS в курсе, и требуется INDEXES на месте, следовал за NORMALIZATION правила. Тогда, мой друг, просто пойти на один SQL и перестаньте беспокоиться о производительности прямо сейчас.

Если вы действительно столкнулись с какими-либо проблемами с производительностью, опубликуйте execution planНа основании чего могут быть представлены дополнительные предложения.

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

Заметка : Настройка производительности — все о кардинальности. Кардинальность не в количестве столбцов, а в количестве строк.

Обновить : И помните, между огромной разницей SQL а также PL/SQL, В основном, интерфейсные приложения вызывают программы на PL / SQL и CONTEXT SWITCHING складывается в EXECUTION TIME,

0
По вопросам рекламы [email protected]