1.查詢的模糊匹配
盡量避免在乙個複雜查詢裡面使用 like '%parm1%'—— 紅色標識位置的百分號會導致相關列的索引無法使用,最好不要用.
解決辦法:
其實只需要對該指令碼略做改進,查詢速度便會提高近百倍。改進方法如下:
a、修改前台程式——把查詢條件的**商名稱一欄由原來的文字輸入改為下拉列表,使用者模糊輸入**商名稱時,直接在前台就幫忙定位到具體的**商,這樣在呼叫後台程式時,這列就可以直接用等於來關聯了。
b、直接修改後台——根據輸入條件,先查出符合條件的**商,並把相關記錄儲存在乙個臨時表裡頭,然後再用臨時表去做複雜關聯
2.索引問題
在做效能跟蹤分析過程中,經常發現有不少後台程式的效能問題是因為缺少合適索引造成的,有些表甚至乙個索引都沒有。這種情況往往都是因為在設計表時,沒去定義索引,而開發初期,由於表記錄很少,索引建立與否,可能對效能沒啥影響,開發人員因此也未多加重視。然一旦程式發布到生產環境,隨著時間的推移,表記錄越來越多
這時缺少索引,對效能的影響便會越來越大了。
這個問題需要資料庫設計人員和開發人員共同關注
法則:不要在建立的索引的資料列上進行下列操作:
◆避免對索引字段進行計算操作
◆避免在索引欄位上使用not,<>,!=
◆避免在索引列上使用is null和is not null
◆避免在索引列上出現資料型別轉換
◆避免在索引欄位上使用函式
◆避免建立索引的列中使用空值。
3.複雜操作
部分update、select 語句 寫得很複雜(經常巢狀多級子查詢)——可以考慮適當拆成幾步,先生成一些臨時資料表,再進行關聯操作
優化SQL查詢 如何寫出高效能SQL語句
1 首先要搞明白什麼叫執行計畫?執行計畫是資料庫根據sql語句和相關表的統計資訊作出的乙個查詢方案,這個方案是由查詢優化器自動分析產生的,比如一條sql語句如果用來從乙個 10萬條記錄的表中查1條記錄,那查詢優化器會選擇索引查詢方式,如果該錶進行了 1 首先要搞明白什麼叫執行計畫?執行計畫是資料庫根...
如何寫出高效能SQL
在編寫一條查詢語句的時候,可以依據你要查詢資料表的資料總量,估算一下這條查詢大致需要遍歷多少行資料 如果遍歷行數在百萬以內的,只要不是每秒鐘都要執行幾十上百次的頻繁查詢,可以認為是安全的。遍歷資料行數在幾百萬的,查詢時間最少也要幾秒鐘,你就要仔細考慮有沒有優化的辦法。遍歷行數在千萬左右,是 mysq...
如何寫出高效能SQL語句
1 首先要搞明白什麼叫執行計畫?執行計畫是資料庫根據sql語句和相關表的統計資訊作出的乙個查詢方案,這個方案是由查詢優化器自動分析產生欀如一條sql語句如果用來從乙個10萬條記錄的表中查1條記錄,那查詢優化器會選擇 索引查詢 方式,如果該錶進行了歸檔,當前只剩下5000條記錄了,那查詢優化器就會改變...