如何以最快的速度判断某字段中存在某字符?

咏帆 2009-07-10 03:31:35
有如下表:

CREATE TABLE [dbo].[tb](
[A] [nvarchar](50) COLLATE Chinese_PRC_CI_AS NOT NULL,
[B] [datetime] NULL,
CONSTRAINT [PK_tb] PRIMARY KEY CLUSTERED
(
[A] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]


此表中有250W条记录,并且每月在增加,如何以最快的速度查询到在A字段中是否存在aStr字符

补充:A字段中无重复记录,现在暂无法增加硬件来提高速度

现在我的办法是用下面的语句来完成的


select A from tb where a=aStr
...全文
60 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
ChinaJiaBing 2009-07-10
  • 打赏
  • 举报
回复

if exists(select * from 表where charindex('字符',字段)>0)
print '字符存在'
else
print '字符不存在'
咏帆 2009-07-10
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 liangck 的回复:]
select 1000000/(24*60*60)
[/Quote]

平均11次/s
liangCK 2009-07-10
  • 打赏
  • 举报
回复
select 1000000/(24*60*60)
咏帆 2009-07-10
  • 打赏
  • 举报
回复
补充一下:
是完全匹配

另:每天查询次数在100W次以上~~(这个才是头疼的问题)


增加补充:
此表tb的内容,只会一个月增加一次(从其他表导入进来)
aStr要查询的字符串也是变化的,每次查询的都不一样
咏帆 2009-07-10
  • 打赏
  • 举报
回复
补充一下:
是完全匹配

另:每天查询次数在100W次以上~~(这个才是头疼的问题)


增加补充:
此表tb的内容,只会一个月增加一次(从其他表导入进来)
Kain 2009-07-10
  • 打赏
  • 举报
回复
或者通过哈希值来匹配?增加一个字段hashValue,保存文本时存入当前文本的哈希值,查询的时候通过查询条件的哈希值类匹配。哈希值是数字,索引应该很快的。
tyro_novice 2009-07-10
  • 打赏
  • 举报
回复
每天超过100w次的查寻,我觉得应该改一下存储方式。。。
Kain 2009-07-10
  • 打赏
  • 举报
回复
这样的索引是不是考虑在业务端用luncent做,用lucent索引文本内容
pt1314917 2009-07-10
  • 打赏
  • 举报
回复
同意5楼,使用全文索引。
htl258_Tony 2009-07-10
  • 打赏
  • 举报
回复
普通索引类似 like '%内容%' 这样是没用的,还影响插入的效率.
htl258_Tony 2009-07-10
  • 打赏
  • 举报
回复
考虑做下全文索引吧.
tyro_novice 2009-07-10
  • 打赏
  • 举报
回复
建一个自增字段identityID,建个索引,
if exists (select a from tb where identityID>[上次检查过的值]and a like '%aStr%')
select 'a中存在aStr'
else
select 'a中不存在aStr'
咏帆 2009-07-10
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 chuifengde 的回复:]
完全匹配就用= 包含就用like
[/Quote]


补充一下:
是完全匹配

另:每天查询次数在100W次以上~~(这个才是头疼的问题)
chuifengde 2009-07-10
  • 打赏
  • 举报
回复
完全匹配就用= 包含就用like
咏帆 2009-07-10
  • 打赏
  • 举报
回复
在线等~~~

沙发自己坐~~

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧