千万级数据查询速度问题

kinthtime 2007-03-23 12:45:33


项目是ASP.NET SQL2005开发的
表不复杂,但数量大,现在有几百万了,到时可能单表上千万记录

表设计如下;

ID Company Address City Phone


用户可以用 Company 和 Address 包含的关键字搜索

我写成如下,但速度本地测试都比较慢了,在查询分析器中也要等十几秒

SELECT * FROM MainCom where Company like '%条件%' or Address like '%条件%'

在Company Address 2 个字段都 建了索引了 但还很慢,我该怎么做啊

高手指点以下啊
...全文
520 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
littlegang 2007-03-25
  • 打赏
  • 举报
回复
like %xx% 又是用 or 关系
肯定会很费时间的
想办法修改一下查询的方式吧
kissknife 2007-03-25
  • 打赏
  • 举报
回复
sql server2005中已经引入了表分区的概念,类似于oracle中的partition
LZ应该看看..!
burn3tt 2007-03-25
  • 打赏
  • 举报
回复
Company和Address分别按字母的排列建立两张表,比如a~e的可以建立一张表,这样就好了。客户端取到数据的时候,首先分析首字母,然后再到相应数据库中取出来,其实就是分词存储了
-渔民- 2007-03-25
  • 打赏
  • 举报
回复
indexchar--》charindex
-渔民- 2007-03-25
  • 打赏
  • 举报
回复
是的,like %xx% 本身就慢了,再是or 一起就更不用说了
建议 like 改indexchar
再是查询方式也就可以改一下,要不的话,在页面提示相关的信息
leixueqiyi 2007-03-23
  • 打赏
  • 举报
回复
建立缓存,再查
mao5000 2007-03-23
  • 打赏
  • 举报
回复
如果不改表设计除了硬件以外,估计是没什么可以救你了。。

改下设计了?比如:按照地域分别存储数据。

然后再查询页面处理多表的事情。

honey52570 2007-03-23
  • 打赏
  • 举报
回复
帮顶啊
babyrockxray 2007-03-23
  • 打赏
  • 举报
回复
别用like 查询文本的话使用全文索引
经常需要查询的可以建立视图,用视图索引
sbqcel 2007-03-23
  • 打赏
  • 举报
回复
把like 换成 CHARINDEX or PATINDEX 再看看
yucong 2007-03-23
  • 打赏
  • 举报
回复
多处理器
服务器集群
很管用的
y1x12z8 2007-03-23
  • 打赏
  • 举报
回复
谁也救不了你.别从技术方面想办法了.
tianwenjie 2007-03-23
  • 打赏
  • 举报
回复
server 2005 的索引只对 like 'A%'起作用,对‘%A%’好像不起作用,所以百万级的数据在你的pc机上肯定很慢,所以你可以将两个查询结果union起来,试一下
bwangel 2007-03-23
  • 打赏
  • 举报
回复
能不能用定长的数据字段重新定义表,听说定长的比变长的速度要快.

不过末尾出现的空格真是讨厌,不知sql2000的设计者怎么想的
Tao_H 2007-03-23
  • 打赏
  • 举报
回复
没玩过那么大的东西,学习ing
guanshenglang 2007-03-23
  • 打赏
  • 举报
回复
关注

111,120

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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