我是 SQL 新手,目前正在阅读“自学 SQL 书籍”
书中提到有时您需要用列名指定表名(紧接在 SELECT 行之后)以获得您想要的结果。还提到无论如何这样做通常是很好的做法。这是一个具体的例子:
SELECT vend_name, prod_name, prod_price
FROM Vendors, Products
WHERE Vendors.vend_id = Products.vend_id;
SELECT Vendors.vend_name, Products.prod_name, Products.prod_price
FROM Vendors, Products
WHERE Vendors.vend_id = Products.vend_id;
两个代码块实现相同的结果。我的问题是是否存在性能差异,以及全名是否更好。
提前致谢。
最佳答案
首先,学习正确的 join
语法。简单规则:永远不要在 from
子句中使用逗号。
其次,学会使用表别名。这些应该是表格的缩写。表别名使查询更易于编写和阅读。
第三,始终使用限定的列名。使用列名对性能没有影响。哦,如果你只有一张 table 或类似的东西,也许你会破例。但是,包括表别名是一个很好的主意,一种最佳实践。为什么?
- 您或其他人将来可能会查看查询,但不想弄清楚哪些名称来自哪些表。
- 您或其他人可以将新列添加到其中一个表中,以匹配另一个表中的列。而且,查询神秘地停止工作。
- 您或其他人可能会说“多么好的查询,但我需要添加另一个表”。另一个表有命名冲突,只是引入了更多的工作。
所以,我会将查询写成:
SELECT v.vend_name, p.prod_name, p.prod_price
FROM Vendors v JOIN
Products p
ON v.vend_id = p.vend_id;
或者,如果你愿意:
SELECT v.vend_name, p.prod_name, p.prod_price
FROM Vendors v JOIN
Products p
USING (vend_id)
关于mysql - SQL "Table_Name.Column_name"VS "Column_name"性能和语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30594793/