3

我对 PHP/MySql 相当陌生,并且通常使用查询。我只是想知道在查询中使用“AS”是否有任何好处,而不是试图让它看起来更干净?它是否会加快查询速度?我可能可以通过谷歌搜索来解决这个问题,但我想问我的第一个问题,看看它是如何工作的。我会选择一个答案(不像某些人......)

和:

SELECT
news.id as id
news.name as name
FROM news

没有:

SELECT
news.id
news.name
FROM news

我发现的多对多关系教程中的一个更复杂的示例:

SELECT
c.name,
cf.title
FROM celebrities AS c
JOIN (
    SELECT
    icf.c_id,
    icf.f_id,
    f.title
    FROM int_cf AS icf
    JOIN films AS f
    ON icf.f_id = f.f_id
) AS cf
ON c.c_id = cf.c_id
ORDER BY c.c_id ASC
4

4 回答 4

4

如果您知道不会与其他列发生冲突,则没有理由使用它。性能没有差异,但它确实改变了输出列的名称。当您构建动态选择时,它非常有用。例如,如果你有一个first_name和一个last_name字段,你可以使用 CONCAT 函数来做:

SELECT CONCAT(first_name, ' ', last_name) AS name FROM whatever

此外,AS 运算符在定义子查询表时起作用,正如您在该 JOIN 中所示。如果没有该 AS,您将无法在 ON 子句或 SELECT 字段中引用该表。

于 2012-12-03T23:04:45.543 回答
3

1)不,它不会以一种或另一种方式影响性能

2) 就 SQL 查询的可读性而言,这只是一个偏好问题

3)它确实影响了输出的可读性(它改变了列标题)

于 2012-12-03T23:04:39.000 回答
2

仅关于歧义和保留字。它不影响性能。歧义是指来自不同表的具有相同名称的两列。其他 RDBMS 会为此打你一巴掌。保留字是指必须使用反引号或别名转义的系统字。

对于子查询,别名列可能不会派生到子级别之后。

于 2012-12-03T23:05:31.353 回答
1

使用别名(“AS”关键字)和不使用别名时的查询执行速度是相同的。使用它们的原因:

  • 如果您有非常长或复杂的表名或列名,它可以更轻松地使用数据库:
SELECT c.Construction_ID, c.Name, c.Price 
FROM Constructions c LEFT JOIN 
Constructions_Orders co ON c.Construction_ID = co.Construction_ID
WHERE c.OrderID='1' AND c.Name='ConstructionName'

但是,它会更改输出列的名称,也要考虑到它(使阅读代码的人更难)。

  • 别名对于创建动态选择很有用:
mysql> SELECT CONCAT(id, name, work_date) as profile
    -> FROM employee_tbl;
+-----------------------------+
| profile                     |
+-----------------------------+
| 1John2007-01-24             |
| 2Ram2007-05-27              |
| 3Jack2007-05-06             |
| 3Jack2007-04-06             |
| 4Jill2007-04-06             |
| 5Zara2007-06-06             |
| 5Zara2007-02-06             |
+-----------------------------+
7 rows in set (0.00 sec)
于 2012-12-03T23:06:14.217 回答