SQL 在 2 列中搜索性能并合并 1 列
SQL Search performance in 2 columns vs combined 1 column
使用MSSQL Server存储过程,短table结构是
Id int, --PK
Code varchar(20), --Indexed column
Oems varchar(max) --Some rows will have thousands of oems
有500K条记录,每一行都有一个Code。 40 万行有 Oem。样本数据
Id Code Oems
-------------------------------------
1 ARD5612 ,7171833,B716382,324324,2423423,GB23434,00002334
2 80001627 ,99901811,1727282,...
当前条件是(找到所有并且只有键的开头必须匹配)
WHERE code LIKE @Key + '%' OR Oems LIKE '%,' + @Key + '%'
Key = 1234
Code = 123456 Find
Code = 001234 don’t find
Oems = ,12340000,kh77,062483 find
Oems = ,7777,5262,abc723,x1234 don’t find
所以,我的问题是,我应该合并这两列并在一列上进行搜索还是保持原样?
在 Code
列上建立索引对搜索有积极影响吗?
谢谢
编辑:正如许多人建议的那样,如果我将 Oem 转换为新的 table,那么 table 将有 15M 条记录。
新设计对性能有何帮助?
谢谢
谢谢大家。我将逗号分隔值插入到一个新的 table 中,每行有一个值,添加了一个索引并且效果很好。
使用MSSQL Server存储过程,短table结构是
Id int, --PK
Code varchar(20), --Indexed column
Oems varchar(max) --Some rows will have thousands of oems
有500K条记录,每一行都有一个Code。 40 万行有 Oem。样本数据
Id Code Oems
-------------------------------------
1 ARD5612 ,7171833,B716382,324324,2423423,GB23434,00002334
2 80001627 ,99901811,1727282,...
当前条件是(找到所有并且只有键的开头必须匹配)
WHERE code LIKE @Key + '%' OR Oems LIKE '%,' + @Key + '%'
Key = 1234
Code = 123456 Find
Code = 001234 don’t find
Oems = ,12340000,kh77,062483 find
Oems = ,7777,5262,abc723,x1234 don’t find
所以,我的问题是,我应该合并这两列并在一列上进行搜索还是保持原样?
在 Code
列上建立索引对搜索有积极影响吗?
谢谢
编辑:正如许多人建议的那样,如果我将 Oem 转换为新的 table,那么 table 将有 15M 条记录。 新设计对性能有何帮助?
谢谢
谢谢大家。我将逗号分隔值插入到一个新的 table 中,每行有一个值,添加了一个索引并且效果很好。