在oracle书中,我读到当我们通过连接2个或更多个表来执行SELECT时,如果在列名称之前使用tablename,则SELECT工作得更快。
例如:
SELECT table1.name, table1.dob....
代替SELECT name, dob....
在MySQL中它是一样的吗?
编辑
我知道当有相同的字段名称时,这是一个很好的做法。即使没有相同的字段名称,我的想法是关于性能观点
答案 0 :(得分:1)
我不了解性能,但这是一个很好的做法,特别是在加入桌子时。连接的表可以具有相同的字段名称,然后查询将失败。如果表名太长,也可以使用别名:
SELECT t1.name, t2.dob FROM table1 t1 JOIN table t2 ON ...
答案 1 :(得分:1)
从效率的角度来看,Oracle和MySQL 将 SQL编译为内部表示,然后再执行它,所以我认为不一定存在显着差异。执行时间,因为如果没有指定表,它们将从字段名称中决定表。时间差将在编译时,它们推导出每个字段的表格。
事实上,我个人怀疑如果指定了表名,Oracle的执行速度会更快!
答案 2 :(得分:0)
当字段名称相同时,这不是一个好习惯,这是一直很好的做法。这不是关于效率,而是关于你的查询没有破坏,当其他人将字段添加到其中一个具有重叠名称的连接表时,所以你的东西在六个月的时间内工作,而不仅仅是今天。