SQL数据库高手来

abbey0812 2010-08-28 07:57:22
SQL语句的优化

select Province as 省份,count(distinct SendNumber) as 条数
from NumberBelong n,RecvSmsTable r,SendCustomers s
where n.Num = substring(r.SendNumber,1,7)
and dbo.Fun_BusinessId(r.SmsContent) = s.[ID]
and r.SmsTime >= '2010-08-01 00:00:00'
and r.SmsTime <= '2010-08-28 23:59:59'
and n.Province='广东省'
group by Province

这个查询速度要20多秒,高手指点。 这是3张表进行连接查询,3个表都还没有建立索引
因为实在不知道如何建索引, 先把3张表的字段分别列出
表名:NumberBelong
字段:NumId(自动增长) Num(号码) Code(区号-7位) Province(省)City(市)CardType(手机卡类型)
总共有174495条数据

表名:RecvSmsTable
字段:SmsIndex(自动增长)SmsTime(时间)SendNumber(发送号码-11位)SmsContent(发送内容)
总共有100万条数据

表名:SendCustomers
字段:ID(varchar类型)name(客户名称)
共100条

高手帮帮忙,急~
...全文
104 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
abbey0812 2010-08-29
  • 打赏
  • 举报
回复
楼上可以具体说明么?5555,跪求高手指点。
Rotel-刘志东 2010-08-29
  • 打赏
  • 举报
回复
创建复合索引了。
select Province as 省份,count(distinct SendNumber) as 条数   
from NumberBelong n,RecvSmsTable r,SendCustomers s
where n.Num = substring(r.SendNumber,1,7)
and dbo.Fun_BusinessId(r.SmsContent) = s.[ID]
and r.SmsTime >= '2010-08-01 00:00:00'
and r.SmsTime <= '2010-08-28 23:59:59'
and n.Province='广东省'
group by Province
abbey0812 2010-08-29
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 obuntu 的回复:]
Try ~


SQL code

create clustered index idx_numid on NumberBelong(NumId)

create clustered index idx_smsindex on RecvSmsTable(SmsIndex)

create nonclustered index idx_SmsTime on RecvSmsTable……
[/Quote]这个试过了,效果不大呀 ,还是一样的呢,高手帮我再想想吧,谢谢了大侠
abbey0812 2010-08-29
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 abbey0812 的回复:]
自己顶~
[/Quote]

这个试过了,效果不大呀 ,还是一样的呢,高手帮我再想想吧,谢谢了大侠
abbey0812 2010-08-29
  • 打赏
  • 举报
回复
高手都哪去了呀~急急急
xiaoxiao8372 2010-08-28
  • 打赏
  • 举报
回复
dbo.Fun_BusinessId(r.SmsContent) 根据发送内容就能确定业务代码吗?? 你可以用临时表先把符合where n.Num = substring(r.SendNumber,1,7)and dbo.Fun_BusinessId(r.SmsContent) = s.[ID] 条件的放到表里,然后在用临时表做条件关联!不过,楼主最好还是能把数据库提供出来啊,呵呵!!
obuntu 2010-08-28
  • 打赏
  • 举报
回复
Try ~


create clustered index idx_numid on NumberBelong(NumId)

create clustered index idx_smsindex on RecvSmsTable(SmsIndex)

create nonclustered index idx_SmsTime on RecvSmsTable(SmsTime)


abbey0812 2010-08-28
  • 打赏
  • 举报
回复
自己顶~

22,207

社区成员

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

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