关于sql的查询性能优化?求大神指点!急急急。。。。

微笑着独行 2014-04-13 05:32:04
遇到高并发,多条件单表查询瓶颈,求大神指点指点


问题解释如下:该表为客户发布信息的表,表内Message字段存储客户发布的信息,当前同时在线人数上千,高并发查询,以及客户查询关键字较多,一般为城市,比如查询条件有上百个,对于这样的,只查询这一个表里的message字段,如何处理,求大神指点,小弟感激之至!下边为查询条件

City='济南' and ( 1!=1 or MessageContent like '%安丘%' or MessageContent like '%昌乐%' or MessageContent like '%昌邑%' or MessageContent like '%高密%' or MessageContent like '%临朐%' or MessageContent like '%青州%' or MessageContent like '%寿光%' or MessageContent like '%潍坊%' or MessageContent like '%诸城%' or MessageContent like '%安丘%' or MessageContent like '%昌乐%' or MessageContent like '%昌邑%' or MessageContent like '%高密%' or MessageContent like '%临朐%' or MessageContent like '%青州%' or MessageContent like '%寿光%' or MessageContent like '%潍坊%' or MessageContent like '%诸城%' or MessageContent like '%陕西%' or MessageContent like '%安康%' or MessageContent like '%安康%' or MessageContent like '%白河%' or MessageContent like '%汉阴%' or MessageContent like '%岚皋%' or MessageContent like '%宁陕%' or MessageContent like '%平利%' or MessageContent like '%石泉%' or MessageContent like '%旬阳%' or MessageContent like '%镇坪%' or MessageContent like '%紫阳%' or MessageContent like '%宝鸡%' or MessageContent like '%宝鸡县%' or MessageContent like '%凤县%' or MessageContent like '%凤翔%' or MessageContent like '%扶风%' or MessageContent like '%麟游%' or MessageContent like '%陇县%' or MessageContent like '%眉县%' or MessageContent like '%岐山%' or MessageContent like '%千阳%' or MessageContent like '%太白%' or MessageContent like '%城固%' or MessageContent like '%佛坪%' or MessageContent like '%汉中%' or MessageContent like '%留坝%' or MessageContent like '%略阳%' or MessageContent like '%勉县%' or MessageContent like '%南郑%' or MessageContent like '%宁强%' or MessageContent like '%西乡%' or MessageContent like '%洋县%' or MessageContent like '%镇巴%' or MessageContent like '%丹凤%' or MessageContent like '%洛南%' or MessageContent like '%山阳%' or MessageContent like '%商南%' or MessageContent like '%镇安%' or MessageContent like '%柞水%' or MessageContent like '%铜川%' or MessageContent like '%宜君%' or MessageContent like '%白水%' or MessageContent like '%澄城%' or MessageContent like '%大荔%' or MessageContent like '%富平%' or MessageContent like '%韩城%' or MessageContent like '%合阳%' or MessageContent like '%华县%' or MessageContent like '%华阴%' or MessageContent like '%蒲城%' or MessageContent like '%潼关%' or MessageContent like '%渭南%' or MessageContent like '%长安%' or MessageContent like '%高陵%' or MessageContent like '%户县%' or MessageContent like '%蓝田%' or MessageContent like '%临潼%' or MessageContent like '%西安%' or MessageContent like '%周至%' or MessageContent like '%彬县%' or MessageContent like '%长武%' or MessageContent like '%淳化%' or MessageContent like '%泾阳%' or MessageContent like '%礼泉%' or MessageContent like '%乾县%' or MessageContent like '%三原%' or MessageContent like '%武功%' or MessageContent like '%咸阳%' or MessageContent like '%兴平%' or MessageContent like '%旬邑%' or MessageContent like '%永寿%' or MessageContent like '%安塞%' or MessageContent like '%富县%' or MessageContent like '%甘泉%' or MessageContent like '%黄陵%' or MessageContent like '%黄龙%' or MessageContent like '%洛川%' or MessageContent like '%吴旗%' or MessageContent like '%延安%' or MessageContent like '%延长%' or MessageContent like '%延川%' or MessageContent like '%宜川%' or MessageContent like '%志丹%' or MessageContent like '%子长%' or MessageContent like '%定边%' or MessageContent like '%府谷%' or MessageContent like '%横山%' or MessageContent like '%佳县%' or MessageContent like '%靖边%' or MessageContent like '%米脂%' or MessageContent like '%清涧%' or MessageContent like '%神木%' or MessageContent like '%绥德%' or MessageContent like '%吴堡%' or MessageContent like '%榆林%' or MessageContent like '%子洲%'


...全文
342 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
微笑着独行 2014-04-18
  • 打赏
  • 举报
回复
引用 14 楼 xiaoxiangqing 的回复:
索引用不上,只能考虑用全文索引
select top 50 MessageID,Account,MessageContent,Phone,City,SendDateTime,CarOrGoods,State,DaJi,IsGuid,IsVerify FROM Message where convert(varchar(10),SendDateTime,120)=convert(varchar(10),getdate(),120) and City='济南' and ( 1!=1 or MessageContent like '%安丘%' or MessageContent like '%昌乐%' or MessageContent like '%昌邑%' or MessageContent like '%高密%' or MessageContent like '%临朐%' or MessageContent like '%青州%' or MessageContent like '%寿光%' or MessageContent like '%潍坊%' or MessageContent like '%诸城%' or MessageContent like '%安丘%' or MessageContent like '%昌乐%' or MessageContent like '%昌邑%' or MessageContent like '%高密%' or MessageContent like '%临朐%' or MessageContent like '%青州%' or MessageContent like '%寿光%' or MessageContent like '%潍坊%' or MessageContent like '%诸城%' or MessageContent like '%陕西%' or MessageContent like '%安康%' or MessageContent like '%安康%' or MessageContent like '%白河%' or MessageContent like '%汉阴%' or MessageContent like '%岚皋%' or MessageContent like '%宁陕%' or MessageContent like '%平利%' or MessageContent like '%石泉%' or MessageContent like '%旬阳%' or MessageContent like '%镇坪%' or MessageContent like '%紫阳%' or MessageContent like '%宝鸡%' or MessageContent like '%宝鸡县%' or MessageContent like '%凤县%' or MessageContent like '%凤翔%' or MessageContent like '%扶风%' or MessageContent like '%麟游%' or MessageContent like '%陇县%' or MessageContent like '%眉县%' or MessageContent like '%岐山%' or MessageContent like '%千阳%' or MessageContent like '%太白%' or MessageContent like '%城固%' or MessageContent like '%佛坪%' or MessageContent like '%汉中%' or MessageContent like '%留坝%' or MessageContent like '%略阳%' or MessageContent like '%勉县%' or MessageContent like '%南郑%' or MessageContent like '%宁强%' or MessageContent like '%西乡%' or MessageContent like '%洋县%' or MessageContent like '%镇巴%' or MessageContent like '%丹凤%' or MessageContent like '%洛南%' or MessageContent like '%山阳%' or MessageContent like '%商南%' or MessageContent like '%镇安%' or MessageContent like '%柞水%' or MessageContent like '%铜川%' or MessageContent like '%宜君%' or MessageContent like '%白水%' or MessageContent like '%澄城%' or MessageContent like '%大荔%' or MessageContent like '%富平%' or MessageContent like '%韩城%' or MessageContent like '%合阳%' or MessageContent like '%华县%' or MessageContent like '%华阴%' or MessageContent like '%蒲城%' or MessageContent like '%潼关%' or MessageContent like '%渭南%' or MessageContent like '%长安%' or MessageContent like '%高陵%' or MessageContent like '%户县%' or MessageContent like '%蓝田%' or MessageContent like '%临潼%' or MessageContent like '%西安%' or MessageContent like '%周至%' or MessageContent like '%彬县%' or MessageContent like '%长武%' or MessageContent like '%淳化%' or MessageContent like '%泾阳%' or MessageContent like '%礼泉%' or MessageContent like '%乾县%' or MessageContent like '%三原%' or MessageContent like '%武功%' or MessageContent like '%咸阳%' or MessageContent like '%兴平%' or MessageContent like '%旬邑%' or MessageContent like '%永寿%' or MessageContent like '%安塞%' or MessageContent like '%富县%' or MessageContent like '%甘泉%' or MessageContent like '%黄陵%' or MessageContent like '%黄龙%' or MessageContent like '%洛川%' or MessageContent like '%吴旗%' or MessageContent like '%延安%' or MessageContent like '%延长%' or MessageContent like '%延川%' or MessageContent like '%宜川%' or MessageContent like '%志丹%' or MessageContent like '%子长%' or MessageContent like '%定边%' or MessageContent like '%府谷%' or MessageContent like '%横山%' or MessageContent like '%佳县%' or MessageContent like '%靖边%' or MessageContent like '%米脂%' or MessageContent like '%清涧%' or MessageContent like '%神木%' or MessageContent like '%绥德%' or MessageContent like '%吴堡%' or MessageContent like '%榆林%' or MessageContent like '%子洲%' ) order by MessageID desc 对于这条语句,如何优化 啊!!!
xiaoxiangqing 2014-04-17
  • 打赏
  • 举报
回复
索引用不上,只能考虑用全文索引
xiaoxiangqing 2014-04-17
  • 打赏
  • 举报
回复
全匹配索引用不上,只能考虑用全文索引
微笑着独行 2014-04-17
  • 打赏
  • 举报
回复
引用 7 楼 DBA_Huangzj 的回复:
提取到新列,用MessageContent _newCol In ('地区1',地区2'','地区3'....)这样的写法,效率自然有明显的提升,你的写法会导致索引无效,数据量一大,神都救不了你
关键是 MessageContent _newCol 里边的值不是一个啊!!!
微笑着独行 2014-04-17
  • 打赏
  • 举报
回复
关键是 MessageContent _newCol 里边也是多个值!!!!!!
微笑着独行 2014-04-17
  • 打赏
  • 举报
回复
坐等啊!求大神们多多指点!!!瓶颈现在是多关键字,多用户查询!
發糞塗牆 2014-04-14
  • 打赏
  • 举报
回复
如果提取的字段不多,方法还是一样,多高几列,如果很多且不确定,可能只有全文搜索了
微笑着独行 2014-04-14
  • 打赏
  • 举报
回复
关键是,要查询的关键字不是一个!是N个,0<N>100,而内容中的关键字也是N个的字段!!!提取没问题!但是多个关键词查询
發糞塗牆 2014-04-14
  • 打赏
  • 举报
回复
提取到新列,用MessageContent _newCol In ('地区1',地区2'','地区3'....)这样的写法,效率自然有明显的提升,你的写法会导致索引无效,数据量一大,神都救不了你
發糞塗牆 2014-04-14
  • 打赏
  • 举报
回复
MessageContent 有规律不?有的话在insert或者update的时候提取地址存到新列,否则优化不了什么程度
微笑着独行 2014-04-14
  • 打赏
  • 举报
回复
请大神帮忙写个语句!感激之至
發糞塗牆 2014-04-14
  • 打赏
  • 举报
回复
全文索引和索引不同,是另外一个技术,除了这个之外,根据你的查询,还可以做一个计算列,把地区从原数据中在插入过程中就提取出来存到新列,然后加上索引,这样可以减少like '%%'的写法带来的性能问题
Mr_Nice 2014-04-13
  • 打赏
  • 举报
回复
引用 2 楼 WangoooZhen2010 的回复:
已经建立了索引
查询条件上百个,这个可能要在结构上做调整了。 已经不是单独使用索引这么简单的。 上百个的like 基本上就跟没有索引差不多了。 全表扫描,或者是全部的关键字爬一遍 。 查询效率上不会有提升。 另,这种查询实际上在key-value型的数据库上查询效率更高。 如果没有数据库的限制,lz也可以考虑将部分查询放到key-value型的数据库上来做。 目前有几种可以参考 参考 http://www.iteye.com/news/27628
微笑着独行 2014-04-13
  • 打赏
  • 举报
回复
已经建立了索引
Mr_Nice 2014-04-13
  • 打赏
  • 举报
回复
lz 这个尝试使用全文搜索可能好些。

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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