2015-01-11 5 views
4

Зачем нам нужен запрос SELECT COLUMN1, COLUMN2, когда мы можем просто использовать SELECT * и показывать только те столбцы, которые нам нужны?SELECT COLUMN SQL

И какая разница между SELECT ALL и SELECT?

+0

Это зависит от требований ... –

+3

Когда вы приходите в супермаркет, покупаете ли вы все продукты только потому, что «что, если мне нужно завтра это манго?» или у вас есть список, в котором есть только те продукты, которые вам нужны? – zerkms

+0

Чтобы уменьшить объем данных, передаваемых между сервером и клиентом, до нужной суммы. – Barmar

ответ

3

Вопрос в том, зачем использовать SELECT col1, col2, когда вы можете просто показать, какие столбцы вам нравятся в приложении и всегда использовать SELECT *?

Основными причинами являются следующие:

  1. Выбор только те столбцы, которые вы хотите означает, что сервер должен собирать и передавать меньше данных в приложение, что делает для более быстрого запроса и меньше использования ресурсов, особенно если вы имеют много столбцов или некоторые из них содержат BLOB.
  2. Если структура в базе данных изменяется (например, если столбец переименован или удален, вы получаете более понятные ошибки, и они появляются в списке, а не в приложении.
  3. Если вы хотите использовать поля в результат по их целочисленному индексу, вы должны указать столбцы, иначе вы находитесь на милость любого порядка столбцов, на котором возникает оптимизация запросов. Ваше приложение может просто перестать работать, потому что кто-то добавил колонку или индекс.

Редактировать ответ на вторую часть вопроса:

О, и разница между SELECT ALL и SELECT заключается в том, что нет никакой разницы.
SELECT ALL - это поведение по умолчанию SELECT во всех диалектах, о которых я знаю.

Однако SELECT DISTINCT отличается. Она возвращает уникальные значения множества, так что если вы запустите:

SELECT DISTINCT col1, col2 

на столе, который содержит

1,2 
1,2 
2,2 
2,3 

вы получите

1,2 
2,2 
2,3 
+0

Я получил его, спасибо :) –

+1

«Если вы хотите использовать поля в результатах по их целочисленному индексу» - если это делается на первом месте - я считаю, что это справедливое наказание за следующие ужасные практики. – zerkms

+0

Извините за чрезмерное редактирование, но просто хотел по-настоящему водить этот дом. Видели так много вещей в мои дни. :-) –

0

Если у вас большой стол с большим количеством столбцов, и вам нужен только один из них, то «ВЫБЕРИТЕ КОЛОННУЮ» будет выполняться быстрее, чем «ВЫБРАТЬ ВСЕ».

+0

Что такое "большой стол"? – zerkms

+0

Таблица с большим количеством данных – Nikola

+1

Если у вас есть таблица с 1 миллиардом строк, но выберите только одну строку: почему число строк имеет значение (в контексте вопроса)? – zerkms

2

Есть много вопросов, отвечал до сравнения разностей SELECT Col1, Col2 vs SELECT *

Вы можете найти некоторых из них здесь.

Which is faster/best? SELECT * or SELECT column1, colum2, column3, etc

Is there a difference between Select * and Select

select * vs select column


О SELECT ALL и SELECT: Там нет никакой разницы между этими двумя утверждениями, и вы можете использовать SELECT Col1, Col2 или SELECT ALL Col1, Col2

Если вы посмотрите на SELECT заявление:

SELECT [ALL | DISTINCT] column1[,column2] FROM table1

ALL по умолчанию.