SQL "Table_Name.Column_name" VS "Column_name" 性能和语法
SQL "Table_Name.Column_name" VS "Column_name" performance & syntax
我是 SQL 的新手,目前正在处理 "teach yourself SQL book"
书中提到,有时您需要指定 table 名称和列名称(紧接在 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;
两个代码块实现相同的结果。我的问题是是否有性能差异,如果全名是更好的做法。
提前致谢。
如果您有多个具有相同列名的表,以下格式很有用,以减少混淆
Vendors.vend_name
让我简单:
There wont be any performance issues but it is a good practice
to follow
首先,学习正确的 join
语法。简单规则:切勿在 from
子句中使用逗号。
其次,学会使用table别名。这些应该是 table 的缩写。 Table 别名使查询更易于编写和阅读。
第三,始终使用限定的列名。使用列名对性能没有影响。哦,如果你只有一个 table 或类似的东西,也许你会破例。但是,包括 table 别名是一个很好的主意,也是一种最佳实践。为什么?
- 您或其他人将来可能会查看查询,但不想弄清楚哪些名称来自哪些 tables。
- 您或其他人可以将新列添加到 table 中的一个,以匹配另一个中的列。而且,查询神秘地停止工作。
- 你或其他人可能会说 "what a great query, but I need to add another table"。另一个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)
首先我怀疑会有任何性能差异。然而即使有 也不值得在长运行.
table.column 是一种很好的做法,因为它使您的 sql 更易于阅读。在您学习时,这可能没什么大不了的,但您很可能会遇到 SQL 庞大的陈述,当您这样做时,您会很高兴这种做法。
我建议您查看 AS 关键字。这将允许您将别名分配给 table 以再次使语句更易于理解。
SELECT p.id, v.name
FROM products AS p
JOIN venders as V
ON p.id = v.ProductId
这使您可以使 SQL 声明的 SELECT
部分尽可能简短,并避免重复产品。产品。等您要显示的每个字段。
我是 SQL 的新手,目前正在处理 "teach yourself SQL book"
书中提到,有时您需要指定 table 名称和列名称(紧接在 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;
两个代码块实现相同的结果。我的问题是是否有性能差异,如果全名是更好的做法。
提前致谢。
如果您有多个具有相同列名的表,以下格式很有用,以减少混淆
Vendors.vend_name
让我简单:
There wont be any performance issues but it is a good practice to follow
首先,学习正确的 join
语法。简单规则:切勿在 from
子句中使用逗号。
其次,学会使用table别名。这些应该是 table 的缩写。 Table 别名使查询更易于编写和阅读。
第三,始终使用限定的列名。使用列名对性能没有影响。哦,如果你只有一个 table 或类似的东西,也许你会破例。但是,包括 table 别名是一个很好的主意,也是一种最佳实践。为什么?
- 您或其他人将来可能会查看查询,但不想弄清楚哪些名称来自哪些 tables。
- 您或其他人可以将新列添加到 table 中的一个,以匹配另一个中的列。而且,查询神秘地停止工作。
- 你或其他人可能会说 "what a great query, but I need to add another table"。另一个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)
首先我怀疑会有任何性能差异。然而即使有 也不值得在长运行.
table.column 是一种很好的做法,因为它使您的 sql 更易于阅读。在您学习时,这可能没什么大不了的,但您很可能会遇到 SQL 庞大的陈述,当您这样做时,您会很高兴这种做法。
我建议您查看 AS 关键字。这将允许您将别名分配给 table 以再次使语句更易于理解。
SELECT p.id, v.name
FROM products AS p
JOIN venders as V
ON p.id = v.ProductId
这使您可以使 SQL 声明的 SELECT
部分尽可能简短,并避免重复产品。产品。等您要显示的每个字段。