关于sql server 千万级 的模糊查询
不要问我千万级了 干嘛还用 sql server
奇葩年年有 你们懂的。我也不解释了。
1.模糊查询
多字段模糊
比如like
表中有名字 身份证 地址
我写了一个模糊查询 武汉 则2-3秒 查询出1000条记录(使用top 1000,否则死掉。不解释0.0!)
但是我写三个字以上 则死了
也就是说 它匹配字段越多 就越慢。 难道需要做个选项选择哪个字段模糊查询么。
2.随机查询1000
目前用的newid() 用的 Id between x and y 在范围内随机找topN 条
求大神优化
数据库与客户端为局域网
------解决方案--------------------sp_help 此表名
看看有没有建立索引,没有的话根据实际情况合理地建立索引了(程序里面经常按哪些字段查询的,建议建立索引)
------解决方案--------------------
加索引嘛。网上下的2000w的数据?我这边加了索引速度还算满不错的。
------解决方案--------------------全文索引一个方法
要查询的字段加索引也是一个办法
like本来就是比较费资源的!!
------解决方案--------------------
like 就算是top100,也是要进行表扫描的,如果很不幸,这100纪录都在靠后的位置,一样死掉,这是和实际纪录的命中率有关系的
用全文索引,别说千万级,亿级都可以
别那么歧视MS的东西
如果between 一段里面的话 就会好。这个。有什么办法达到 秒级么
分表或者什么的 都可以
sql编译后,会自动优化的,如果有主键或者能明显缩小查询范围的,肯定会优先查询,就像你加的between条件一样,效率当然会大幅提升