日期:2014-05-17  浏览次数:21184 次

关于sql server 千万级 的模糊查询

不要问我千万级了  干嘛还用 sql server
奇葩年年有  你们懂的。我也不解释了。


1.模糊查询
多字段模糊
比如like
表中有名字 身份证 地址
我写了一个模糊查询   武汉   则2-3秒 查询出1000条记录(使用top 1000,否则死掉。不解释0.0!)

但是我写三个字以上 则死了  
也就是说  它匹配字段越多  就越慢。 难道需要做个选项选择哪个字段模糊查询么。

2.随机查询1000
目前用的newid()   用的 Id between x and y   在范围内随机找topN 条


求大神优化

数据库与客户端为局域网
sql?server 优化

------解决方案--------------------
sp_help 此表名
看看有没有建立索引,没有的话根据实际情况合理地建立索引了(程序里面经常按哪些字段查询的,建议建立索引)
------解决方案--------------------
引用:
Quote: 引用:

like 就算是top100,也是要进行表扫描的,如果很不幸,这100纪录都在靠后的位置,一样死掉,这是和实际纪录的命中率有关系的

用全文索引,别说千万级,亿级都可以
别那么歧视MS的东西


如果between 一段里面的话  就会好。这个。有什么办法达到  秒级么

分表或者什么的  都可以


加索引嘛。网上下的2000w的数据?我这边加了索引速度还算满不错的。
------解决方案--------------------
全文索引一个方法

要查询的字段加索引也是一个办法 


like本来就是比较费资源的!!
------解决方案--------------------
引用:
Quote: 引用:

like 就算是top100,也是要进行表扫描的,如果很不幸,这100纪录都在靠后的位置,一样死掉,这是和实际纪录的命中率有关系的

用全文索引,别说千万级,亿级都可以
别那么歧视MS的东西


如果between 一段里面的话  就会好。这个。有什么办法达到  秒级么

分表或者什么的  都可以


sql编译后,会自动优化的,如果有主键或者能明显缩小查询范围的,肯定会优先查询,就像你加的between条件一样,效率当然会大幅提升