2012-05-30 29 views
1

在一本oracle书中,我读到当我们通过连接两个或多个表来执行SELECT时,如果在SELECT名称工作得更快之前使用tablename。
如:
SELECT table1.name, table1.dob....,而不是SELECT name, dob....JOIN - 在列名之前添加表名是否是一种好的做法?

它是在MySQL以同样的方式?

编辑

我知道,这是一个很好的做法时,有相同的字段名。即使没有相同的字段名称,我在想的也是性能观点

+0

确定'explain'给出了相同的计划 – triclosan

+0

@triclosan你能解释一下吗?我没有完全得到你 – Anish

+0

运行'explain first_query'和'explain second_query'并比较结果 – triclosan

回答

1

我不知道性能,但这是一个很好的做法,尤其是在连接表格时。连接的表可能具有相同的字段名称,并且查询将失败。您也可以使用别名,如果你的表的名称太长:

SELECT t1.name, t2.dob FROM table1 t1 JOIN table t2 ON ... 
+0

当有相同的字段名称时,这是一个很好的做法。即使没有相同的字段名称,我在想的是关于性能的观点 – Anish

+0

是的,事实上,我不知道性能的观点,但我认为差异可以忽略不计。你做了一些基准吗? – sp00m

1

效率的角度来看,甲骨文和MySQL 执行前编译的SQL到一个内部表示,所以不认为执行时间必须有显着差异,因为如果它们没有被指定,它们将从字段名称中决定表格。时差将在编译时间,在那里他们推导出每个字段的表格。

事实上,我个人怀疑,如果指定表名,Oracle执行速度会更快!

+0

当有相同的字段名称时,这是一个很好的做法。我想的是关于性能的观点,即使没有相同的字段名称 – Anish

+0

我已经编辑了答案。 –

0

当字段名称相同时,这是不好的做法,这是不错的做法。这不是关于效率,而是关于当其他人将字段添加到具有重叠名称的连接表中时,您的查询不会中断,所以您的工作在六个月的时间内运行,而不仅仅是在今天。

相关问题