1樓:沈隨意
1、檢視sql是否涉及多表的聯表或者子查詢,如果有,看是否能進行業務拆分,相關欄位冗餘或者合併成臨時嫌御表(業務和演算法的優化)
2、涉及連結串列的查詢,是否能進行分表查詢,單表查詢之後的結果進行欄位整合。
3、如果以上兩種都不能操作,非要連結串列查詢,那麼考慮對相對應的查詢條件廳鉛做索引。加快查詢速度。
4、針對數量大的表進行歷史表分離(如交易流水錶)
5、資料庫主從分離,讀寫分離,降低讀寫針對同一表同時的扮者好壓力,至於主從同步,mysql有自帶的binlog實現 主從同步。
6、explain分析sql語句,檢視執行計劃,分析索引是否用上,分析掃瞄行數等等。
7、檢視mysql執行日誌,看看是否有其他方面的問題。
個人理解:從根本上來說,查詢慢是佔用mysql記憶體比較多,那麼可以從這方面去酌手考慮。
2樓:匿名使用者
1.對查詢進行優化,要儘量避免全表掃瞄,首先應考慮在 where 及 order by 涉及的列上建立索引。
2.應儘量避免在 where 子句中對欄位進行 null 值判斷,否則將導致引擎放棄使用索引而進行全表祥前掃瞄。
3.應儘量避免在 where 子句中使用 !=或 <>操作符,否則將引擎放棄使用索引而進行全表掃瞄。
4.應儘量避免在 where 子句中使用 or 來連線條件,如果乙個欄位有索引,乙個欄位沒有索引,將導致引擎放棄使用索引而進行全表掃瞄。
和 not in 也要慎用攜喊,否則會導致全表掃瞄。
6.若要提高效率,可以考慮全文檢索,儘量避免全表掃瞄。
7.如果在 where 子句中使用引數,也會導致全表辯宴野掃瞄。因為sql只有在執行時才會解析區域性變數,但優化程式不能將訪問計劃的選擇推遲到執行時;它必須在編譯時進行選擇。
然 而,如果在編譯時建立訪問計劃,變數的值還是未知的,因而無法作為索引選擇的輸入項。
8.應儘量避免在 where 子句中對欄位進行表示式操作,這將導致引擎放棄使用索引而進行全表掃瞄。
9.應儘量避免在where子句中對欄位進行函式操作,這將導致引擎放棄使用索引而進行全表掃瞄。
10.不要在 where 子句中的「=」左邊進行函式、算術運算或其他表示式運算,否則系統將可能無法正確使用索引。
請教一條SQL語句的優化
在應用系統開發初期,由於開發資料庫資料比較少,對於查詢sql語句,複雜檢視的的編寫等體會不出sql語句各種寫法的效能優劣,但是如果將應用系統提交實際應用後,隨著資料庫中資料的增加,系統的響應速度就成為目前系統需要解決的最主要的問題之一。系統優化中一個很重要的方面就是sql語句的優化。對於海量資料,劣...
寫出下列程式每執行一條後,AL的內容為什麼?為什麼?
h b,h b,h h eh,cf ,af 調整時,低四位無借位無需調整,高四位有借位,借一當十六,所以高四旦蠢位減去 e 所以調整後為h das和daa一樣,借位時把借十六調整為借十,多仿遲備借的備毀就減去 用位二進位數表示位十進位物豎數的編碼方式為bcd碼,常用的bcd為bcd碼,分別用二進位的...
如何回一條關鍵的資訊,如何回一條關鍵的資訊
我覺得她對你還是有感覺的,不然她不會覺得困惑,只是她覺得你這麼快追她,是不認真的表現,怕你只是玩玩而已,你別太著急,慢慢來,先從朋友開始,彼此瞭解,我想通過時間的接觸,她會了解你的心意的,也會看到你的真心。她 可能覺得你有點輕浮,很隨便的就追求一個女孩子。你就說,我不是輕浮!只是真的想和你在一起,才...