在 SQL 语句中使用完全限定的表名称(包括数据库名称)。
始终在语句中显式指定数据库名称和每个表名称。(如果是主数据库,请使用“main”)。例如,以下代码包括一个显式数据库名称
main
:
SELECT employeeId
FROM main.employees
如果显式指定数据库名称,运行时就不必检查每个数据库才能找到匹配表。这样做还消除了使运行时选择错误数据库的可能性。即使 SQLConnection 仅连接到单个数据库,也要遵循此规则。在后台,SQLConnection 还连接到可通过 SQL 语句访问的临时数据库。
在 SQL
INSERT
和
SELECT
语句中使用显式列名称。
下列示例介绍如何使用显式列名称:
INSERT INTO main.employees (firstName, lastName, salary)
VALUES ("Bob", "Jones", 2000)
SELECT employeeId, lastName, firstName, salary
FROM main.employees
将上述示例与下列示例进行比较。避免使用这种类型的代码:
-- bad because column names aren't specified
INSERT INTO main.employees
VALUES ("Bob", "Jones", 2000)
-- bad because it uses a wildcard
SELECT *
FROM main.employees
如果没有显式列名称,运行时必须执行额外操作才能找到列名称。如果
SELECT
语句使用通配符(而不是显式列),将导致运行时检索额外数据。此额外数据需要额外处理并将创建不需要的额外对象实例。
除非将该表与其本身进行比较,否则避免在一个语句中多次连接同一个表。
随着 SQL 语句不断增大,您会无意中将数据库表多次连接到查询。通常,使用该表一次即可实现相同结果。如果在一个查询中使用一个或多个视图,很有可能多次连接同一表。例如,您可能将表连接到查询,也可能连接到一个包含该表中的数据的视图。这两种操作都可能导致多次连接。
|
|
|