请教海量数据表建立索引的优化方案

wanghan226 2010-01-06 07:43:28
表名1:table_WorkInfo >一千万条

单据号 业务号(主键) 机构编号 种类编号 开始时间 结束时间 输入时间 生效时间 ....
表名2:table_Personnel >二千万条
业务号 姓名 编码 ....

最常见的查询时table_WorkInfo 关联 table_Personnel 后通过该结果集中的全部字段进行筛选
select * from table_WorkInfo as a inner join table_Personnel as b on a.业务号=b.业务号

而筛选条件可能是以下几种情况:
1 业务号
2机构编号+种类编号
3开始时间+结束时间
4输入时间
5姓名
6输入以上任意条件
目前的索引方案:
table_WorkInfo 对 开始时间 结束时间 输入时间 生效时间 分别建立非聚集索引
对 机构编号 种类编号建立复合索引
对 输入时间 建立聚集索引(由于输入时间带秒所以值都不同感觉好像不应该建聚集,请帮忙看看吧)
table_Personnel对 姓名建立非聚集索引

请教按以上方案建立的索引是否合理
...全文
174 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
shabble 2010-01-07
  • 打赏
  • 举报
回复
我来学习
umwelt99 2010-01-07
  • 打赏
  • 举报
回复
时间不应该建立索引.
table_Personnel
业务号--主键
姓名等不是太重复的建立非聚集索引
发现重复较多的行要注意不要直接建立索引,单独拖出来建立个表也是可以的.
table_WorkInfo
机构编号和种类编号符合起来是否重复次数也很多?反正重复率越大的,索引效果越差
dawugui 2010-01-06
  • 打赏
  • 举报
回复
1业务号 --> 建立主键.
2机构编号+种类编号 -->建立联合索引.
3开始时间+结束时间 -->考虑建立视图.

其他的貌似没必要了.
chunyemencomeon 2010-01-06
  • 打赏
  • 举报
回复
我觉得你写的有些不妥
  • 打赏
  • 举报
回复
1 业务号 --建立索引
2机构编号+种类编号 --建立复合索引
3开始时间+结束时间 --建立复合索引

4输入时间 --建立索引
5姓名 --建立索引
6输入以上任意条件

SQL77 2010-01-06
  • 打赏
  • 举报
回复
业务号,应该考虑加聚集索引

复合查询,加组合索引

3开始时间+结束时间
xman_78tom 2010-01-06
  • 打赏
  • 举报
回复
sql server 内置的“数据库引擎优化顾问”(DTASHELL.EXE)可以回答 lz 的问题。
7761098 2010-01-06
  • 打赏
  • 举报
回复
将所有条件加起来的sql语句的执行计划
然后用那个索引优化指南的工具添加,一般就足够了
Q315054403 2010-01-06
  • 打赏
  • 举报
回复
有偿专业支持,提供后续服务
--小F-- 2010-01-06
  • 打赏
  • 举报
回复
这个要看具体情况 具体情况具体分析的
bancxc 2010-01-06
  • 打赏
  • 举报
回复
学习 mark

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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