Улучшение производительности декартова произведения SQL за счет уменьшения количества столбцов

У меня есть SQL-запрос, который использует декартово произведение для большой таблицы. Однако мне нужен только один столбец из одной из таблиц. Будет ли он работать лучше, если я выберу только один столбец перед использованием декартова произведения?

Итак, другими словами, будет ли это:

SELECT A.Id, B.Id
FROM (SELECT Id FROM Table1) AS A , Table2 AS B;

быть быстрее, чем это, учитывая, что Table1 имеет больше столбцов, чем Id?:

SELECT A.Id, B.Id
FROM Table1 AS A , Table2 AS B;

Или количество столбцов не имеет значения?


person isnulltrue    schedule 17.07.2015    source источник


Ответы (2)


В большинстве баз данных две формы будут иметь один и тот же план выполнения.

Первый может быть хуже для базы данных (такой как MySQL), которая материализует подзапросы.

Второй должен быть лучше с индексами на две таблицы. . . table1(id) и table2(id). Индекс будет использоваться для получения значения, а не базовых данных.

person Gordon Linoff    schedule 17.07.2015

Попробуйте сами! Но, вообще говоря, наличие подзапроса, уменьшающего количество строк, поможет повысить производительность. Однако ваш запрос должен быть написан по-другому:

select a.id aid, b.id bid from
(Select id from table1 where id=<specific_id>) a, table2 b
person Carsten Massmann    schedule 17.07.2015
comment
Мне очень жаль, я перепутал слова столбец и ряд (сейчас исправил). Я имел в виду только уменьшить столбцы, а не строки. - person isnulltrue; 17.07.2015
comment
В этом случае я согласен с Гордоном: вероятно, не будет иметь никакого значения, какую форму вы используете, поскольку вы все равно не будете выводить все столбцы. - person Carsten Massmann; 17.07.2015