①盡量避免全表掃描:首先考慮在where及order by涉及的列上建立索引,然后盡量避免導致引擎放棄使用索引而進行全表掃描的操作,比如說在where子句中,使用!=或<>運算子,對null值進行判斷,使用or連接條件,使用in和not in,對欄位進行運算式操作或函式操作,使用引數等這些操作都應該盡量避免;
②使用索引欄位作為條件時盡可能讓欄位順序和索引順序一致,提高索引效率;
③索引并不是越多越好,在提高select效率的同時會降低insert和update的效率,所以索引數量要建的合適,建立索引的列也需要慎重考慮,一個表的索引數最好不要超過6個;
④盡量使用char/nchar代替varchar/nvarchar,節省存盤空間的同時,對于查詢來說在一個相對較小的欄位內搜索效率顯然要高;
⑤任何地方都不要使用select * from,用具體欄位串列代替*,不要回傳任何用不到的欄位;
⑥不怎么需要建立索引的情況下,盡量使用表變數代替臨時表;
⑦使用聯合union代替手動創建的臨時表,創建查詢時只需要用union作為關鍵字把多個select陳述句連接起來就可以;
⑧使用連接join代替子查詢,使用join不需要在記憶體中創建臨時表來完成用子查詢時的分幾個步驟完成的查詢作業,效率更高,
以上僅做簡單記錄,后續專案中碰到其他優化技巧繼續補充,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/321124.html
標籤:其他
