SQLSERVER2008R2表和视图是否需要创建相同的索引

baibaipleo 2017-12-26 10:17:04
表A 字段id, a1,a2,a3
表B 字段 id, A_id, b2,b3

视图view_A a1,a2,a3,b.id, A_id, b2,b3

现在我要创建单个的索引
问题:
1. 在表A中 对a1创建了非聚集索引 是否还需要在视图view_A里 再创建a1的索引?
2. 如果 创建了非聚集索引(a1,a2) 那么查询时 where (a1="de1" or a1="de2") and a2="单位名称" and a3="今天日期"
此时 非聚集索引(a1,a2)是否起作用?
3. 如果 已有聚集索引(id,a3) 并且有 非聚集索引(a1,a2) 那么 where怎样写 更有效率?
4.聚集索引 会不会 影响 程序运用中的 排序的顺序? order by id desc/asc ?
...全文
346 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
baibaipleo 2017-12-30
  • 打赏
  • 举报
回复
实测5800万条数据 非聚集索引确实起到了作用 还行 索引占用空间并不大
OwenZeng_DBA 2017-12-28
  • 打赏
  • 举报
回复
引用 6 楼 baibaipleo 的回复:
还是数据量小 我加大到400万条 试一试
测试得怎么样了
baibaipleo 2017-12-27
  • 打赏
  • 举报
回复
还是数据量小 我加大到400万条 试一试
OwenZeng_DBA 2017-12-27
  • 打赏
  • 举报
回复
引用 4 楼 baibaipleo 的回复:
我看了执行计划 发现 当存在 自增列id为聚集索引时 where (a1="de1" or a1="de2") and a2="单位名称" and a3="今天日期" 非聚集索引(a1,a2) 没有用到。。。。。。
这个用到不是一定会用到。优化引擎会根据你数据的分布。上面讲的是可能会用到。因为你没有加a3的列,就会进行书签查找,SQL Server认为使用扫描会更快。
日月路明 2017-12-27
  • 打赏
  • 举报
回复
引用 2 楼 z10843087 的回复:
表A 字段id, a1,a2,a3 表B 字段 id, A_id, b2,b3 视图view_A a1,a2,a3,b.id, A_id, b2,b3 现在我要创建单个的索引 问题: 1. 在表A中 对a1创建了非聚集索引 是否还需要在视图view_A里 再创建a1的索引? 不需要 2. 如果 创建了非聚集索引(a1,a2) 那么查询时 where (a1="de1" or a1="de2") and a2="单位名称" and a3="今天日期" 此时 非聚集索引(a1,a2)是否起作用? 能用到,不过会有书签查找。建议(a1,a2,a3)建索引比较好 3. 如果 已有聚集索引(id,a3) 并且有 非聚集索引(a1,a2) 那么 where怎样写 更有效率? 这个问题反了。或者说思路反了。应该先有SQL语句再调整索引。 4.聚集索引 会不会 影响 程序运用中的 排序的顺序? order by id desc/asc ? 这个问题比较好。很多人认为建立了聚集索引,那么表中的数据查询出来就是有序的。但实际上,如果要保证你的查询结果是按照你想要顺序显示, 那么后面一点要加上order by
baibaipleo 2017-12-27
  • 打赏
  • 举报
回复
我看了执行计划 发现 当存在 自增列id为聚集索引时 where (a1="de1" or a1="de2") and a2="单位名称" and a3="今天日期" 非聚集索引(a1,a2) 没有用到。。。。。。
OwenZeng_DBA 2017-12-27
  • 打赏
  • 举报
回复
表A 字段id, a1,a2,a3 表B 字段 id, A_id, b2,b3 视图view_A a1,a2,a3,b.id, A_id, b2,b3 现在我要创建单个的索引 问题: 1. 在表A中 对a1创建了非聚集索引 是否还需要在视图view_A里 再创建a1的索引? 不需要 2. 如果 创建了非聚集索引(a1,a2) 那么查询时 where (a1="de1" or a1="de2") and a2="单位名称" and a3="今天日期" 此时 非聚集索引(a1,a2)是否起作用? 能用到,不过会有书签查找。建议(a1,a2,a3)建索引比较好 3. 如果 已有聚集索引(id,a3) 并且有 非聚集索引(a1,a2) 那么 where怎样写 更有效率? 这个问题反了。或者说思路反了。应该先有SQL语句再调整索引。 4.聚集索引 会不会 影响 程序运用中的 排序的顺序? order by id desc/asc ? 这个问题比较好。很多人认为建立了聚集索引,那么表中的数据查询出来就是有序的。但实际上,如果要保证你的查询结果是按照你想要顺序显示, 那么后面一点要加上order by
吉普赛的歌 2017-12-27
  • 打赏
  • 举报
回复
一言蔽之 —— 看执行计划了再说
这个PDF文件是我花钱买来的,现在为了挣积分,拿出来与大家分享!! 本书深入浅出地介绍了目前世界上最受欢迎的数据库管理系统之一——SQL Server。全书共分三个部分:第一部分阐释了数据库的基本概念,讲解了数据库建模语言;第二部分展示了从概念建模到在SQL Server 2008上真正实现数据库的过程;第三部分深入探讨了SQL Server若干方面的技术细节,如数据保护、索引、并发访问等。通过将理论融入数据库实践,清晰地讲解了关系型数据库的设计原则,完整地展示了如何进行良好的关系型数据库设计,深入揭示了SQL Server 2008的技术细节。   本书浓缩了作者作为SQL Server数据库架构师多年来丰富的实践经验,适合各类数据库开发和管理人员学习参考 目录 第1章 数据库概念简介  1.1 数据库设计阶段   1.1.1 概念阶段   1.1.2 逻辑阶段   1.1.3 实现阶段   1.1.4 物理阶段  1.2 关系数据结构   1.2.1 数据库和模式   1.2.2 、行和列   1.2.3 信息原则   1.2.4 域   1.2.5 元数据   1.2.6 键   1.2.7 未显式赋值的项(NULL)  1.3 实体之间的关系   1.3.1 二元关系   1.3.2 非二元关系  1.4 数据访问语言(SQL)  1.5 理解依赖性   1.5.1 函数依赖性   1.5.2 判定  1.6 总结 第2章 数据建模语言  2.1 数据建模介绍  2.2 实体  2.3 属性   2.3.1 主键   2.3.2 替代键   2.3.3 外键   2.3.4 域   2.3.5 命名  2.4 关系   2.4.1 识别性关系   2.4.2 非识别性关系   2.4.3 角色名字   2.4.4 关系基数   2.4.5 动词短语(关系名字)  2.5 描述信息  2.6 其他建模方法   2.6.1 信息工程   2.6.2 Chen ERD   2.6.3 Visio   2.6.4 Management Studio数据库关系图  2.7 最佳实践  2.8 总结 第3章 概念阶段数据建模  3.1 理解需求  3.2 文档化过程  3.3 需求收集   3.3.1 客户访谈   3.3.2 要回答的问题   3.3.3 现存的系统和原型   3.3.4 其他类型的文档  3.4 识别对象和过程   3.4.1 识别实体   3.4.2 实体间关系   3.4.3 识别属性和域  3.5 识别业务规则和业务过程   3.5.1 识别业务规则   3.5.2 识别基础业务过程  3.6 完成概念模型   3.6.1 识别明显的、额外的数据需求   3.6.2 和客户一起评审   3.6.3 重复以上步骤直到客户同意你的模型  3.7 最佳实践  3.8 总结 第4章 规范化过程  4.1 为什么要规范化   4.1.1 消灭重复数据   4.1.2 避免编写不必要的代码   4.1.3 给瘦身   4.1.4 最大化聚集索引的使用   4.1.5 降低每张索引的数量  4.2 规范化应该走多远  4.3 规范化过程  4.4 实体和属性的形式:第一范式   4.4.1 所有属性必须是原子的   4.4.2 实体的所有实例必须包含相同数量的值   4.4.3 实体中出现的所有实体类型都必须不同   4.4.4 第一范式所避免的不规则编程   4.4.5 当前设计不符合第一范式的线索  4.5 属性间的关系   4.5.1 第二范式   4.5.2 第三范式   4.5.3 Boyce-Codd范式  4.6 实体中的多值依赖   4.6.1 第四范式   4.6.2 第五范式  4.7 非规范化  4.8 最佳实践  4.9 总结  4.10 额外的例子  4.11 本书迄今为止所讲述的故事 第5章 实现基础的结构  5.1 评审逻辑设计  5.2 变换设计   5.2.1 选择名字   5.2.2 处理子类型   5.2.3 决定树的实现方式   5.2.4 选择键的实现方式   5.2.5 决定域的实现方式   5.2.6 设置模式   5.2.7 评审“最终的”实现模型  5.3 实现设计   5.3.1 创建基本结构   5.3.2 添加唯一性约束   5.3.3 构建默认约束   5.3.4 添加关系(外键)   5.3.5 处理排序规则和排序   5.3.6 计算列   5.3.7 实现用户定义的数据类型   5.3.8 文档化你的数据库   5.3.9 处理依赖信息  5.4 最佳实践  5.5 总结 第6章 保护数据的完整性  6.1 最佳实

27,579

社区成员

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

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