2010-10-29 58 views
0

我有一些表,例如:汽車(id,NameCar)和人(身份證,PersonName,地址等)搜索關鍵字並檢索找到的列?

我需要搜索一個關鍵字,並說我在哪個列找到它。

示例:搜索思域,返回id爲10的人在汽車名稱處具有思域,並且在地址名稱處。

如何以良好的性能來做到這一點?

回答

0

我使用全文索引爲更好的性能:

 
SELECT 
    A.UserId, 
    CASE WHEN CONTAINS(C.nm_colaborador, @palavraChave) THEN CAST(1 as bit) ELSE CAST(0 as bit) END As Nome, 
    CASE WHEN CONTAINS(C.dc_cidades, @palavraChave) THEN CAST(1 as bit) ELSE CAST(0 as bit) END As Cidade 
FROM 
    Curriculo A 
    INNER JOIN CONTAINSTABLE(Curriculo_Busca, *, @palavraChave) B ON A.UserId = B.[KEY] 
    INNER JOIN Curriculo_Busca C ON B.[KEY] = C.UserId 
1

使視圖包含所有相關的列。然後查詢該視圖。

這將有助於顯示特定的數據值和預期結果。

交替您cuold使用與工會的結構,並且表示該行來自哪個工會從..與此類似:

select name, 1 from person where name like '%civic%' 
union 
select street,2 from address where street like '%civic%' 

..

+0

能會做內部聯接一樣嗎?但更優雅? – 2010-10-29 17:04:25