2014-10-24 3 views
1

Рассмотрим два запроса,Эффективность Выбор запроса

  1. Выберите * из таблицы, где размер = 'L';
  2. Выберите * из таблицы, где id IN (691,12,123,5123, ....); # id - первичный ключ для таблицы. и охватывает все случаи, для которых размер = 'L'.

Теперь рассмотрим таблицу с 2 миллионами записей, и я буду запускать оба запроса.

Какой из двух запросов будет работать быстрее и почему?

Рассмотрите эту ситуацию с точки зрения системы, которая отфильтровывает данные по выбору опции.

+0

Является ли 'size' колонкой? Если да, то есть ли индекс 'size'? –

+0

предположительно, примерно от 20 до 25% строк - это размер «L»? Это один большой IN()! – Strawberry

ответ

1

Вкратце: ответы на них зависят от количества строк size='L'. Если есть много строк, вторая будет более эффективной, потому что индекс на size медленный (мощность).

+0

Привет, benni, граф обоих запросов остается тем же. теперь какой из них более эффективен. – Antariksh

+0

Сделайте 'Select Count (*) как lCount из таблицы where size = 'L'' и сравните результат с помощью 'Select Count (*) как allCount from table'. Если lCount очень мал по сравнению с allCount, вы не увидите никакой разницы. Если lCount большой по сравнению с allCount, второй запрос (первичный ключ) будет быстрее. – Benvorth

+0

вы можете объяснить, почему? – Antariksh

Смежные вопросы