В SQL, как использование DISTINCT влияет на производительность? - PullRequest
5 голосов
/ 06 февраля 2009

Я пытаюсь выбрать отдельный список, в котором дубликаты создаются в нескольких полях. Например,

SELECT tablename.field1Date, 
       tablename.field2Number, 
       tablename.field3Text 
FROM tablename;

Выбирает дублирующие записи в поле даты, числа и текста соответственно.

Теперь, когда я выбираю отдельные записи, чтобы обеспечить то, что я ищу, производительность, кажется, резко снижается.

SELECT DISTINCT tablename.field1Date,
                tablename.field2Number, 
                tablename.field3Text 
FROM tablename;

Есть ли известные для этого причины? Я должен признать, что я использую MS Access 2003, который может быть проблемой.

Ответы [ 3 ]

10 голосов
/ 06 февраля 2009

Да, в основном нужно отсортировать результаты, а затем повторно обработать, чтобы устранить дубликаты. Этот отбор может также выполняться во время сортировки, но мы можем только догадываться, как именно код работает в фоновом режиме. Вы можете попытаться улучшить производительность, создав индекс, состоящий из всех трех (3) полей.

4 голосов
/ 06 февраля 2009

На этой странице приведены советы по повышению производительности запросов, а также некоторая информация по использованию анализатора производительности. Он скажет вам, что если нужны какие-либо индексы.

http://support.microsoft.com/kb/209126

1 голос
/ 06 февраля 2009

Да, приложению необходимо сравнивать каждую запись с «отдельным» кешем записей по ходу работы. Вы можете повысить производительность, используя индекс, особенно в числовых полях и полях даты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...