2016-08-22 3 views
0

Допустим, у вас есть запрос:SQL Server: оптимизировать запрос со многими «и как» заявления

select columnA, columnB, columnC, columnD 
from tableA 
where columnA like '%hello%' and columnB like '%error%'; 

Что хороший способ, чтобы индексировать таблицу многостраничными и как условия?

вам нужен индекс с обоими Columna и columnB указывая на columnC и columnD

или

вам нужно Columna указывая на B, C, D и columnB указывая на A, C, D.

ли

я не уверен что будет более полезным для оптимизатора здесь ....

+0

Индекс этих столбцов будет в основном (если не полностью) бессмысленным, если вы хотите использовать эти условия фильтра. – Lamak

+1

Здесь нет индексации, потому что у вас есть подстановочные знаки. –

+0

Darn, так можно было бы сделать что-то вроде, скажем, найти результаты, соответствующие первому подобному состоянию, сохранить таблицу tmp, а затем использовать второе подобное условие для фильтрации из этих результатов? Может быть, это вообще поможет? – HumbleWebDev

ответ

0

полнотекстового поиска (FTS) может помочь, но имейте в виду, что у него есть много предостережений, довольно крутой кривой обучения и значительные накладные расходы на техническое обслуживание и администрирование.

И нет, это не поможет вам в поиске произвольной подстроки внутри слова. То есть hello в виде отдельного слова (или как начало одного) будет найдено, но *ello не будет. Однако, судя по вашим примерам, это не должно быть проблемой.