RE эти два ответа на старый вопрос: Ответ 1 , Ответ 2 .
У меня есть запрос, который выбирает 14 столбцов и использует 10 LEFT JOINs, которые я попытался упростить ниже. Я надеюсь, что вы сможете вернуть итоговые результаты COUNT (независимо от LIMIT / OFFSET) в рамках одного и того же запроса.
Мой вопрос: есть ли резкое различие в производительности в зависимости от того, какой из двух ответов я использую, или они в значительной степени делают то же самое?
например, ответ 1
SELECT
a.id,
b.name AS course,
DATE_FORMAT(a.start_date,'%d %M %Y') AS start_date,
DATE_FORMAT(a.end_date,'%d %M %Y') AS end_date,
/* MANY MORE FIELDS IN SELECT STATEMENT */,
(SELECT COUNT(*) AS count FROM courses AS a /* LEFT JOINs & WHEREs */) AS count,
FROM courses AS a
/* MANY LEFT JOINS */
WHERE
a.start_date > CURRENT_DATE(),
/* A FEW MORE WHERE STATEMENTS */
LIMIT 5 OFFSET 15
или ответ 2
SELECT
a.id,
b.name AS course,
DATE_FORMAT(a.start_date,'%d %M %Y') AS start_date,
DATE_FORMAT(a.end_date,'%d %M %Y') AS end_date,
/* MANY MORE FIELDS IN SELECT STATEMENT */,
z.count
FROM courses AS a
/* MANY LEFT JOINS */,
(SELECT COUNT(*) AS count FROM courses AS a /* LEFT JOINs/WHEREs */) AS z
WHERE
a.start_date > CURRENT_DATE(),
/* A FEW MORE WHERE STATEMENTS */
LIMIT 5 OFFSET 15
Прямо сейчас с несколькими тестовыми записями нет разницы, но мне интересно, есть ли простой ДА / НЕТ, когда мы возвращаем 100 или 1000 записей?
RE эти два ответа на старый вопрос: Ответ 1 , Ответ 2 .
У меня есть запрос, который выбирает 14 столбцов и использует 10 LEFT JOINs, которые я попытался упростить ниже. Я надеюсь, что вы сможете вернуть итоговые результаты COUNT (независимо от LIMIT / OFFSET) в рамках одного и того же запроса.
Мой вопрос: есть ли резкое различие в производительности в зависимости от того, какой из двух ответов я использую, или они в значительной степени делают то же самое?
например, ответ 1
SELECT
a.id,
b.name AS course,
DATE_FORMAT(a.start_date,'%d %M %Y') AS start_date,
DATE_FORMAT(a.end_date,'%d %M %Y') AS end_date,
/* MANY MORE FIELDS IN SELECT STATEMENT */,
(SELECT COUNT(*) AS count FROM courses AS a /* LEFT JOINs & WHEREs */) AS count,
FROM courses AS a
/* MANY LEFT JOINS */
WHERE
a.start_date > CURRENT_DATE(),
/* A FEW MORE WHERE STATEMENTS */
LIMIT 5 OFFSET 15
или ответ 2
SELECT
a.id,
b.name AS course,
DATE_FORMAT(a.start_date,'%d %M %Y') AS start_date,
DATE_FORMAT(a.end_date,'%d %M %Y') AS end_date,
/* MANY MORE FIELDS IN SELECT STATEMENT */,
z.count
FROM courses AS a
/* MANY LEFT JOINS */,
(SELECT COUNT(*) AS count FROM courses AS a /* LEFT JOINs/WHEREs */) AS z
WHERE
a.start_date > CURRENT_DATE(),
/* A FEW MORE WHERE STATEMENTS */
LIMIT 5 OFFSET 15
Прямо сейчас с несколькими тестовыми записями нет разницы, но мне интересно, есть ли простой ДА / НЕТ, когда мы возвращаем 100 или 1000 записей?
00MySQL, MS SQL,