一个关于解析顺序的问题

lucklover 2017-07-25 10:11:21
最近两天学习优化. 有一个问题很困惑呀. 求各位大侠帮助.

按照一般的解析顺序的说明,应该是
先FROM
再WHERE
再SELECT的

那假设有多个关系的时候,用最差的情况是 FROM 做了两个关系的笛卡尔积。
按理说这个时候 已经解析了新关系的全部属性呀. 那么问题来了!

用select * 和 用select 属性名的性能不是一样吗!!!

是你们在骗我嘛吗? 还是有别的梗我还不知道的.
...全文
352 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
minsic78 2017-09-12
  • 打赏
  • 举报
回复
对于正常的SQL来讲(就是不理会笛卡尔积,或者出现BUG等情况),排除返回数据到客户端这个步骤,在数据库端,影响性能最大的是SQL执行计划,怎么样访问SQL中包含的对象,是走索引,还是走表扫描?是走nested loops,还是走hash join…… 当然,并发的高低也会影响整库的性能,从整库角度出发,单独语句执行时间比较低的SQL,在高并发的情况下,不一定单独执行时候执行时间较长的SQL好。
lucklover 2017-09-12
  • 打赏
  • 举报
回复
嗯. 版主大人. 可能我上面没说的那么明白. 我想讨论的是同样的条件下.性能是不是一样. 举个例子,比如一共有50列, *的话毫无疑问是返回50列,而我直接写50个列名当然也返回50列. 此时的性能应该是一致的吧. 而且一开始的开贴子的原因在于,其实性能差距是在FROM语句造成的.而select 语句应该对最终语句执行时间的影响不大.
引用 4 楼 wmxcn2000 的回复:
用select * 和 用select 属性名的性能不是一样吗!!! 比如一共有 50 列,写 * 就是返回50 列, select col1, col2, col3 ,这个写法,都是写一部分列, 可能只是 10 列,也可能是 5 列, 楼主可以用客户端返回不同的列数,看看响应时间,是不一样的,尤其是有 LOB 字段时,差距还是很大的。
lucklover 2017-07-30
  • 打赏
  • 举报
回复
引用 1 楼 sxq129601 的回复:
你在说解析属性还是说查询效率,笛卡尔积和属性有啥关系。select * 和 用select 属性名 ,性能差别基本上微乎及微,建议还是属性名,因为你写了*,如果字段变化了可能会导致程序报错。
又来看了下, 你是说写*的话, 解析出来的字段有变化,调用这段sql的程序会报错吧. 但不写星的话,如果基表的字段名称变化, sql就报错啦... 结果不是一样的. 所有效果上也没区别呀... 另外你说笛卡尔积和属性有啥关系,在看数据库系统概念的时候,有一个原理需要补充下. 如果你的from语句后面跟两个表,举个例子。 select * from instructor,course; 按照解析顺序应该是先求两个表的笛卡尔积,作为一个新表给输入给select 语句。 情况应该是驱动表的所有列加上被驱动表的所有列,然后返回所有行,这就是新表了。 这时再去看select的限定条件。 这里*和 所有列名的性能应该是一致的, 因为按照上面来说, 不管是*还是所有列名,该做的解析在from语句那一步已经做了 在这一步仅仅是展示筛选而已。 所有优化的重点是from语句后面的表,而不是select语句是不是该写星。 这就是前两天的疑问。 但是貌似现实中很少看到有人在from上做优化的,大部分都是直接写表名了。
卖水果的net 2017-07-30
  • 打赏
  • 举报
回复
用select * 和 用select 属性名的性能不是一样吗!!! 比如一共有 50 列,写 * 就是返回50 列, select col1, col2, col3 ,这个写法,都是写一部分列, 可能只是 10 列,也可能是 5 列, 楼主可以用客户端返回不同的列数,看看响应时间,是不一样的,尤其是有 LOB 字段时,差距还是很大的。
lucklover 2017-07-25
  • 打赏
  • 举报
回复
引用 1楼sxq129601 的回复:
你在说解析属性还是说查询效率,笛卡尔积和属性有啥关系。select * 和 用select 属性名 ,性能差别基本上微乎及微,建议还是属性名,因为你写了*,如果字段变化了可能会导致程序报错。
啊,当然是查询效率… 嗯 看来是一致的
sxq129601 2017-07-25
  • 打赏
  • 举报
回复
你在说解析属性还是说查询效率,笛卡尔积和属性有啥关系。select * 和 用select 属性名 ,性能差别基本上微乎及微,建议还是属性名,因为你写了*,如果字段变化了可能会导致程序报错。
第1章课程定位与教学案例综述. 1.1职业岗位能力需求分析 1.2课程设置和课程定位分析 1.3WebShop电子商城介绍 1.3.1电子商城需求分析 1.3.2电子商城系统设计 1.3.3电子商城数据库设计 1.4LibraryMIS图书管理系统介绍 1.4.1图书管理系统需求分析 1.4.2图书管理系统系统设计 1.4.3图书管理系统数据库设计 习题 第2章面向对象技术和建模基础 2.1面向对象方法 2.1.1面向对象方法的基本思想 2.1.2面向对象方法的发展 2.2面向对象的基本概念与特征 2.2.1面向对象的基本概念 2.2.2面向对象的主要特征 2.3面向对象分析 .2.3.1处理复杂问题的原则 2.3.200A方法的基本步骤 2.4面向对象设计 2.5面向对象实现 2.6面向对象方法的内涵 2.7软件建模概述 2.7.1软件建模的概念 2.7.2软件建模的用途 2.7.3软件建模的优点 习题 第3章UML简介 3.1UML的发展 3.1.1UML的发展历程 3.1.2理解UML建模 3.2UML的特点 3.3UML的结构 3.3.1UML的事物 3.3.2UML的关系 3.4UML的视图 3.4.1用例视图 3.4.2逻辑视图 3.4.3并发视图 3.4.4组件视图 3.4.5部署视图 3.5UML图形符号 3.5.1用例图 3.5.2类图 3.5.3对象图 3.5.4状态图 3.5.5活动图 3.5.6顺序图 3.5.7协作图 3.5.8组件图 3.5.9部署图 3.5.10UML 2.0新特性 3.6UML建模基本流程 习题 第4章UML建模工具简介 4.1常用UML建模工具 4.1.1 Rational Rose 4.1.2Enterprise Architect 4.1.3Together 4.1.4PowerDesigner 4.1.5 Visi0 4.1.6Tnffun Plat0 4.2Rational Rose安装与配置 4.2.1Rational Rose的运行环境 4.2.2Rational Rose的安装 4.2.3Rational Rose的配置 4.3使用Rational Rose建模 4.3.1Rational Rose主菜单 4.3.2Rational Rose的视图 4.3.3 Rational Rose建模的基本过程 习题 第5章需求建模 5.1用例模型概述 5.2用例图组成 5.2.1参与者 5.2.2系统 5.2.3用例 5.3识别和描述用例.. 5.3.1识别用例 5.3.2绘制WebShop电子商城用例图 5.3.3通过包对用例进行合理规划 5.3.4WebShop电子商城用例图(不含关系) 5.3.5用例描述 5.4用例间的关系 5.4.1泛化关系 5.4.2使用关系 5.4.3包含关系 5.4.4扩展关系 5.4.5关系小结 5.4.6WebShop电子商城用例图(含关系) 习题 第6章静态建模 6.1静态建模概述 6.2类图概述 6.3类图的基本组成 6.3.1类的概述 6.3.2绘制带属性的实体类 6.3.3绘制带操作的实体类 6.3.4绘制边界类图 6.3.5绘制控制类图 6.3.6UML中的类与语言中的类 6.4类之间的关系 6.4.1关联关系 6.4.2聚合关系 6.4.3组合关系 6.4.4泛化关系 6.4.5实现关系 6.4.6依赖关系 6.5对象图 6.5.1对象图概述 6.5.2对象图组成 6.5.3类图和对象图的比较 习题 第7章数据库建模 7.1PowerDesigner简介 7.2PowerDesigner安装和启动 7.2.1PowerDesigner的安装 7.2.2PowerDesigner的启动 7.3PowerDesigner概念数据模型 7.3.1概念数据模型概述 7.3.2PowerDesigner概念数据模型概述 7.4 PowerDesigner物理数据模型 习题 第8章动态建模 8.1动态建模概述 8.2状态图 8.2.1状态图概述 8.2.2状态图组成 8.2.3绘制员工下班回家状态图 8.3活动图 8.3.1活动图概述 8.3.2活动图组成 8.3.3绘制WebShop电子商城活动图 8.4活动图拾遗 8.4.1活动图与流程图的比较 8.4.2活动图与状态图的比较 8.5顺序图 8.5.1顺序图概述 8.5.2顺序图组成 8.5.3绘制WebShop电子商城顺序图 8.6协作图 8.6.1协作图概述 8.6.2协作图组成 8.6.3绘制WebShop电子商城协作图 8.7 顺序图拾遗 8.7.1 顺序图与协作图的比较 8.7.2 顺序图与协作图的互换 习题 第9章物理建模 9.1物理建模概述 9.1.1硬件 9.1.2软件 9.2组件图 9.2.1组件图概述 9.2.2组件图组成 9.2.3绘制WebShop电子商城组件图 9.3部署图 9.3.1部署图概述 9.3.2部署图组成 9.3.3绘制WebShop电子商城部署图 习题 第10章双向工程 10.1双向工程简介 10.2正向工程(生成Java代码) 10.3逆向工程 习题 第11章统一软件过程RUP 11.1RUP简介 11.2RUPT作流程 11.2.1业务建模 11.2.2需求 11.2.3分析设计 11.2.4实施 11.2.5测试 11.2.6部署 11.2.7配置与变更管理 11.2.8项目管理 11.2.9环境 11.3RUP迭代过程 11.3.1初始 11.3.2细化 11.3.3构造 11.3.4移交 11.3.5迭代计划示例(构造阶段) 习题 附录A综合实训 附录B Rational Rose2003主菜单 参考文献...

17,382

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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