在sql server中搜索属性表的最佳方法

时间:2017-06-15 11:08:43

标签: c# sql-server full-text-search

我有2张桌子

header 
(
    id uniqueidentifier,
    code varchar(25),
    description varchar(150),
    ...
)

attributes
(
    headerId uniqueidentifier,
    attributeId uniqueidentifier,
    stringColumn varchar(100),
    integerColumn int,
    decimalColumn decimal(16,5),
    booleanColumn bit,
    textColumn varchar(500),
    ...
)

实际上,我想实现一般搜索,找到所有具有相关属性的标题的header.Id,其值为某些搜索字符串。

我知道搜索索引对此非常理想。但目前还没有计划实施。

我目前的计划是在标头表中创建一个attributeMeta varchar(max)列,并在包含所有属性数据的列中存储一个json,然后在其上执行fullText搜索索引并查询它。

那会没事或有更好的解决方案吗?鉴于我现在不应该实现搜索索引?

1 个答案:

答案 0 :(得分:0)

如果您使用的是sql server,请尝试:::

ALTER TABLE header
ADD COLUMN attributeMeta VARCHAR(MAX)

UPDATE TABLE header
SET attributeMeta =
SELECT
headerId +','+
attributeId +','+
stringColumn +','+
integerColumn +','+
decimalColumn +','+
booleanColumn        -- CONCAT AS MANY TABLES AS YOU NEED
FROM attributes
WHERE id = attributes .headerId)    --im assuming attributes.headerId and headers.id can be used to link the tables

但最好的办法是在相应的字段和表格中创建索引。