Что быстрее? Комбинированные или множественные запросы?

0

Есть ли разница между этими запросами в вопросе производительности в таблице с 1 million record?

id IS PRIMARY

userid IS INDEXED

name IS UNIQUE

Комбинированные запросы:

$Query = 'SELECT name, (SELECT EXISTS (SELECT id FROM reports WHERE userid = 1)) AS status 
FROM users 
WHERE id = 1 
LIMIT 1';

$stmt->prepare($Query);
$stmt->execute();
$row = $stmt->fetch();

$name = $row['name'];
$status = $row['status'];

Несколько запросов:

1

$Query = 'SELECT name
FROM users 
WHERE id = 1 
LIMIT 1';

$stmt->prepare($Query);
$stmt->execute();
$row = $stmt->fetch();

$name = $row['name'];

2

$Query = 'SELECT EXISTS (SELECT id FROM reports WHERE userid = 1)';
$stmt->prepare($Query);
$stmt->execute();
$status = $stmt->fetchColumn();
Теги:
pdo

1 ответ

2
Лучший ответ

Во второй версии MySQL должен скомпилировать, проанализировать и выполнить два запроса. Во-первых, только один запрос должен быть скомпилирован, проанализирован и выполнен.

Останавливаться на достигнутом. Как вы думаете, что быстрее? И примерно сколько?

Как и во всех вопросах производительности, вы можете попробовать сами и посмотреть, что быстрее.

Накладные расходы на выполнение таких простых запросов могут быть весьма важными. Если вам нужна производительность, вам нужен индекс для users(id, name) и для reports(userid). Первый запрос должен быть быстрее из-за накладных расходов на выполнение запросов.

  • 0
    Так что чем меньше, тем лучше в этом случае.
  • 0
    @ Толео. , , Как правило, хорошая идея - позволить базе данных выполнять как можно больше работы. Базы данных оптимизированы для обработки сложных запросов. (Есть исключения, но это хорошая привычка по умолчанию.)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню