百万级查询慢

tongchou 2014-08-30 08:50:56
Select Top 10 a.id,a.cpmc,b.qymc as gsmc,a.cpsb,a.cpbh,a.cpcd,a.cpgg,a.cpjg,a.jysm,a.picture,a.html_pass,a.idate,a.html FROM dbo.productshow a left join corporation b on a.gsid=b.id Where 1=1 and a.cpmc like '%拉力机%' Order By a.id desc , a.idate desc

MSSQL2000 + 8G内存+8核CPU

数据总量:2681567

CPMC 已经建了索引

======================================
问题: 查询比较慢, 有没有类似的存储过程,或者什么方法能提供查询速度,网站类似百度主要以搜索为主.




...全文
326 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaodongni 2014-09-02
  • 打赏
  • 举报
回复
引用 6 楼 hleb231 的回复:
别人都说是搜索网站啦,肯定得用%%
对啊 所以CPMC上有索引没用啊。查询基本都是%..%这种 有索引有啥用。
xiaoxiangqing 2014-09-02
  • 打赏
  • 举报
回复
CPMC是没有用,因为是右匹配,要左匹配才行。
mathsfan 2014-09-02
  • 打赏
  • 举报
回复
用order by 肯定慢啊...
sywcf 2014-09-02
  • 打赏
  • 举报
回复
引用 7 楼 DBA_Huangzj 的回复:
搜素引擎哪是两个百分号就能解决的,而且用2000的话严重落后,升级到高版本的SQL Server,然后用些第三方的全文检索方案吧。like '%%'的,不建索引也罢
严重同意。 楼主的查询条件都是我们经常用到的,没什么特别的,但268W数据,在sql2000里再怎么折腾,也快不到哪去。
  • 打赏
  • 举报
回复
引用 10 楼 tongchou 的回复:
那有没有免费的第三方全文检索的
Apache lucene & Solr http://lucene.apache.org/solr/
tongchou 2014-08-30
  • 打赏
  • 举报
回复
好我试试,谢谢
發糞塗牆 2014-08-30
  • 打赏
  • 举报
回复
引用 10 楼 tongchou 的回复:
那有没有免费的第三方全文检索的
我没在工作中用过,不过你可以先了解微软自带的,但是最好要2008R2以上,2005的不是很准确。
tongchou 2014-08-30
  • 打赏
  • 举报
回复
那有没有免费的第三方全文检索的
發糞塗牆 2014-08-30
  • 打赏
  • 举报
回复
全文检索,但是单纯用SQL Server内置的全文有点力不从心
tongchou 2014-08-30
  • 打赏
  • 举报
回复
不用%% 怎么做模糊匹配呢?
發糞塗牆 2014-08-30
  • 打赏
  • 举报
回复
搜素引擎哪是两个百分号就能解决的,而且用2000的话严重落后,升级到高版本的SQL Server,然后用些第三方的全文检索方案吧。like '%%'的,不建索引也罢
hleb231 2014-08-30
  • 打赏
  • 举报
回复
别人都说是搜索网站啦,肯定得用%%
xiaodongni 2014-08-30
  • 打赏
  • 举报
回复
like '%拉力机%' 这个LIKE会破坏索引的。只有 like '拉力机%' 这种可以引用索引。
tongchou 2014-08-30
  • 打赏
  • 举报
回复
引用 2 楼 fredrickhu 的回复:
建议 排序列建立索引 a.id desc , a.idate 前面的一些查询列可以INCUDE到CPMC JOIN连接的列建立索引。a.gsid,b.id
引用错了,谢谢你啊
tongchou 2014-08-30
  • 打赏
  • 举报
回复
引用 楼主 tongchou 的回复:
Select Top 10 a.id,a.cpmc,b.qymc as gsmc,a.cpsb,a.cpbh,a.cpcd,a.cpgg,a.cpjg,a.jysm,a.picture,a.html_pass,a.idate,a.html FROM dbo.productshow a left join corporation b on a.gsid=b.id Where 1=1 and a.cpmc like '%拉力机%' Order By a.id desc , a.idate desc MSSQL2000 + 8G内存+8核CPU 数据总量:2681567 CPMC 已经建了索引 ====================================== 问题: 查询比较慢, 有没有类似的存储过程,或者什么方法能提供查询速度,网站类似百度主要以搜索为主.
谢谢,我试试看结果,你觉得建全文索引会不会有所提升
--小F-- 2014-08-30
  • 打赏
  • 举报
回复
建议 排序列建立索引 a.id desc , a.idate 前面的一些查询列可以INCUDE到CPMC JOIN连接的列建立索引。a.gsid,b.id

22,210

社区成员

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

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