SQL查询效率问题....数据量很大
有一张表(主表)info字段自动增长主键id,用户号code,公司CP,内容msg.其中该表保守估计应该有7万8千条数据,不是作业备份的话,有时候可能超过10W条。cod...
有一张表(主表) info 字段自动增长主键id,用户号code,公司CP,内容msg.其中该表保守估计应该有7万8千条数据,不是作业备份的话,有时候可能超过10W条。 code和CP唯一确定一个人。
附表 users 通过info的code跟CP关联...要从users里面找到 姓名 name,这样表 数据最多估计就1000条
附表 dept 通过CP的值获取公司的名字deptName.....数据最多100条,但是字段特别多,有20个字段...
通过查询的就是 通过存储过程传递两个参数code cp找到该用户的信息...返回的是info的所有字段,users表的name,dept表的deptName。。。
问题,怎么写这个代码 会让查询的效率高一些呢
我的做法是:info code字段做了个索引..cp(没有做,因为CP的值就只有3个)
我是 select i.*,us.name,d.deptName from info i left join users us on i.cp=us.cp and i.code=users.usercode
left join dept d on i.cp=dept.cp
where code=@code and cp=@cp
但是查询貌似卡蛮久的,我是SQL的小白。。求改善一下代码的逻辑
对了,他本身的那个info表 就有一个聚集索引 是自动id+code的聚集索引...我后面非聚集索引..是不是画蛇添足啊?
因为我感觉那个ID根本就没有用,我想删掉这个聚集索引,只用code来做,貌似删不掉的样子,所以我就添加了个非聚集索引
sql数据库 展开
附表 users 通过info的code跟CP关联...要从users里面找到 姓名 name,这样表 数据最多估计就1000条
附表 dept 通过CP的值获取公司的名字deptName.....数据最多100条,但是字段特别多,有20个字段...
通过查询的就是 通过存储过程传递两个参数code cp找到该用户的信息...返回的是info的所有字段,users表的name,dept表的deptName。。。
问题,怎么写这个代码 会让查询的效率高一些呢
我的做法是:info code字段做了个索引..cp(没有做,因为CP的值就只有3个)
我是 select i.*,us.name,d.deptName from info i left join users us on i.cp=us.cp and i.code=users.usercode
left join dept d on i.cp=dept.cp
where code=@code and cp=@cp
但是查询貌似卡蛮久的,我是SQL的小白。。求改善一下代码的逻辑
对了,他本身的那个info表 就有一个聚集索引 是自动id+code的聚集索引...我后面非聚集索引..是不是画蛇添足啊?
因为我感觉那个ID根本就没有用,我想删掉这个聚集索引,只用code来做,貌似删不掉的样子,所以我就添加了个非聚集索引
sql数据库 展开
2个回答
展开全部
要做一个code+cp的非聚合索引,还有你把语句放在SQL managment studio,按上面按钮 显示估计的执行计划 就可以看到哪里需要时间最多,然后建立索引。
更多追问追答
追问
CP用的不多,也需要做?
还有那个原来的 聚集索引碍不碍事 就是主键ID跟code的索引
追答
不是只对CP做索引,是对code+cp做索引,还有你把语句放在SQL managment studio,按上面按钮 显示估计的执行计划 就可以看到哪里需要时间最多,再对应处理,这里是最准的,如果你不改表结构的话
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询