gpt4 book ai didi

mysql - SQL "Table_Name.Column_name"VS "Column_name"性能和语法

转载 作者:行者123 更新时间:2023-12-01 00:41:46 25 4
gpt4 key购买 nike

我是 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com