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 部分尽可能简短,并避免重复产品。产品。等您要显示的每个字段。