不必要的資料庫執行階段處理

在 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 陳述式變多,您可能會不小心將資料庫資料表多次加入查詢。通常,只要使用資料表一次,即可達到相同的結果。如果您在查詢中使用一或多個檢視,就有可能會多次加入相同的資料表。例如,您可能會在將資料表加入查詢的同時,也加入包含該資料表資料的檢視。這兩項作業都會造成多次加入。