標籤:mysql 查詢 資料庫 select
資料庫 TIPS::
1、用於記錄或者是資料分析的表建立時::使用Id作為主鍵,1,2,3...表示訊息條數,使用者帳號id用於做外鍵,一個使用者對應唯一個accountId
一個accountId可以對應多條資料;
2、建立索引:: 例如需要根據註冊版本號碼和註冊遊戲ID來查詢另外一些欄位的時候,就可以根據版本號碼和遊戲ID來建立索引::相當於就是根據查詢條件來建索引;
3、資料庫查詢最佳化:: (1)、慎用 SELECT DISTINCT,從屬記錄集中排除重複記錄時,才使用DISTINCT;
(2)、選擇最優效率的表名順序 SQLSERVER從右至左的順序處理FROM子句中的表名;當from子句中包含多個表的情況下,必須選擇記錄最少的表作為基礎資料表,即把資料少的表放在最後;(註:有三個以上的表串連查詢,則需要選擇交叉表作為基礎資料表)
4、使用表的別名(Alias)::串連多個表是,使用別名把別名首碼於每個Column上
5、最好使用可SARG作為WHERE搜尋條件:: 例如列和常量之間的比較。在WHERE子句裡不可SARG的搜尋條件如"IS NULL", "<>", "!=", "!>", "!<", "NOT", "NOT EXISTS", "NOT IN", "NOT LIKE"和"LIKE ‘%500‘",通常(但不總是)會阻止查詢最佳化工具使用索引執行搜尋。另外在列上使用包括函數的運算式、兩邊都使用相同列的運算式、或和一個列(不是常量)比較的運算式,都是不可SARG的。 (註::如果你不知道特定的WHERE查詢字句是不是可SARG,可以在查詢分析器裡檢查查詢執行計畫)
6、WHERE字句中的串連順序:: SQLSERVER採用自下而上的順序解析WHERE字句,所以表之間的串連必須寫在其他WHERE條件之前,可以過濾最多資料記錄的條件必須寫在WHERE子句的末尾。
7、避免使用困難的正規運算式::
8、 避免對大型資料表行資料的順序存取::
9、正確使用UNION和UNION ALL:: 使用UNION時、相當於在結果集上執行SELECT DISTINT,UNION將聯合兩個相類似的記錄表,然後搜尋重複的記錄並排除;;; 如果搜尋的聯合記錄集中木有重複記錄,則使用UNION ALL。
10、EXISTS和IN的使用:: 基於基礎資料表的查詢中,為了滿足一個條件,往往需要對另一個表進行串連,在這種情況下,使用EXISTS(或NOT EXISTS)通常將提高查詢的效率。
11、用預存程序代替直接寫查詢語句::減少網路流量和回應時間,提升應用程式效能;
12、預存程序名不要以sp_開頭::這個特別的首碼是為系統預存程序保留的,使用者定義的儲存過的運行,會稍微降低一些執行效率。
13、儲存古城的擁有者要相同:: 同一預存程序裡調用的所有對象的擁有者都應該相同,DBO更合適。
14、讓食物儘可能的短:: 保持TSQL事務儘可能的短,這會減少鎖的數量。
15、tinyint(0-255、-128 - 127 1位元組);smallint(0-65535、-32768 - 32767 2位元組)
mediumint(0-16777215,-8388608 - 8388607 4位元組);int(0-4294967295、-2147483648 - 2147483647 8位元組)
資料庫的最佳化tips