在线等,求简单SQL语句+优化。

lengjing126 2011-07-20 12:00:54
Create table log(
logid int,
tm datetime,
mac varchar(255)
)

Create table userinfo(
ID int,
username,
userID int
)

create table usersouce(
userid int,
souce varchar(255)
)

log表记录用户的登陆记录,userinfo 表记录用户个人信息,usersocue 表记录用户来源,其中 log表的 logid=userinfo 表的ID,userinfo表的userid =usersouce表的userid , 各个表的数据量都在10W以上,其中logid有很多为0的记录,需要过滤下。希望大家帮忙写下最优化的连接查询。
...全文
164 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
lengjing126 2011-07-20
  • 打赏
  • 举报
回复
如果要主键的话,肯定也是增加一自增列。
lengjing126 2011-07-20
  • 打赏
  • 举报
回复
在当前的数据基础上,怎么做才能最大优化数据呢?
叶子 2011-07-20
  • 打赏
  • 举报
回复
没有主键,没有索引怎么保证效率呢?
没有主键的表是不符合第二范式的。
我们建的数据表最好要满足第三范式的要求。
lengjing126 2011-07-20
  • 打赏
  • 举报
回复
logid 有重复的,登陆ID,肯定有重复的。
lengjing126 2011-07-20
  • 打赏
  • 举报
回复
表中没主键,也没索引!
叶子 2011-07-20
  • 打赏
  • 举报
回复

select * from [log] a
left join userinfo b on a.logid =b.userinfo
left join usersouce c on b.userid =c.userid
--a.logid=b.userinfo, 说明logid是有重复的?
叶子 2011-07-20
  • 打赏
  • 举报
回复
select * from log a 
left join userinfo b on a.logid =b.userinfo
left join usersouce c on b.userid =c.userid

--然后给连接字段加上索引。
--你的log表的主键是什么?
wujianfeng32 2011-07-20
  • 打赏
  • 举报
回复
O ,MY GOD. 不留余地的优化
lengjing126 2011-07-20
  • 打赏
  • 举报
回复
其中logid<>0这个条件怎么去优化?
--小F-- 2011-07-20
  • 打赏
  • 举报
回复
select
*
from
[log] a
left join
userinfo b on a.logid =b.userinfo
left join
usersouce c on b.userid =c.userid

-------a表的logid 字段加索引 ,b表的userinfo ,userid 字段加非聚集索引 ,c表的userid 加非聚集索引

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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