2015-03-10 5 views
0

Я использовал предложение «Distinct» в своем sql-запросе, но столкнулся с проблемой ухудшения производительности. При запросе базы данных требуется больше времени, чем ожидалось.Оптимальная оптимизация запросов

У меня есть Google'd и нашел, что отдельное предложение может сортировать таблицу.

Мой вопрос в том, есть ли какой-либо другой способ, - это улучшить запрос, изменив запрос таким образом, чтобы результат был таким же или любым другим подходящим способом.

Мой запрос прост, как:

SELECT DISTINCT a,b,c,d,e FROM table_test WHERE a LIKE '12%' AND((b = 'ABC') OR (c = 'ABC')); 

Обратите внимание, что я создал индекс на, B, C также.

+0

Использование 'OR' сделало его медленным, альтернативы могут помочь. –

+0

Мой запрос такой, что я должен рассмотреть «a» и «b» или «c». В любом случае OR Clause не имеет никакого значения. Основная проблема - это предложение Distinct – user2094147

+1

. Одна из альтернатив OR, которую я не уверен быстрее, - использует 'UNION', а другой использует' temp table', что вы вставлять данные на основе 'b' следующих данных вставки на основе' c', а затем возвращать эту 'temp table' - в sp -. –

ответ

0

Вы пробовали это?

SELECT a,b,c,d,e 
    FROM table_test 
    WHERE a LIKE '12%' AND b = 'ABC' 
UNION 
SELECT a,b,c,d,e 
    FROM table_test 
    WHERE a LIKE '12%' AND c = 'ABC' 
+0

Да, но в плане выполнения он делает аналогичную вещь, как разную (например, сортировку). Время выполнения такое же, как раньше. – user2094147

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