Ускоренный SQL-запрос с объединением и т.п. - PullRequest
1 голос
/ 29 марта 2012

Есть ли возможность ускорить SQL-запрос, подобный следующему?

SELECT....
FROM A, B, C
WHERE 
A.a = B.a AND
B.b like '%'+C.a+'%' 

Ответы [ 2 ]

1 голос
/ 29 марта 2012

Хотя я бы предпочел увидеть этот синтаксис (поскольку он гораздо реже непреднамеренно приведет к перекрестному соединению):

SELECT A.a, B.a, B.b, C.a
  FROM A
  INNER JOIN B
    ON A.a = B.a
  INNER JOIN C
    ON B.b LIKE '%' + C.a + '%';

Если дорогостоящей частью этого запроса является операция LIKE, на самом деле вы ничего не можете сделать, так как для этого конкретного шаблона каждый раз требуется сканирование. Можете ли вы показать некоторые примеры данных в B.b и C.a? Также есть индексы на A.a, B.a или B.b?

1 голос
/ 29 марта 2012
  • Старайтесь избегать «лайков».

  • Пользователь Inner Join.

  • Создание индексов для таблиц A.a и B.a

    SELECT ...
    FROM A INNER JOIN B
    ON A.a = B.a
    INNER JOIN C
    ON B.b LIKE '%'+C.a+'%'
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...