當我們資料量大的時候,我們的sql執行效率往往不是那麼可觀,雖然結果也執行的出來
sql也是正確的,但是有的時候我們不得不更改原來的sql以提公升效能。
就像排序演算法一樣,邏輯簡單的冒泡也能實現功能,但是資料量大的時候執行效率就非常
的差,而我們的快速排序可以出色的解決我們的需求。
對於 innodb 型別的表,我們有以下幾種方式可以提高insert插入資料的效率的效率:
但是以下情況不使用索引:
用於查詢行的關鍵字與 order by 中所使用的不相同
使用持久的連線資料庫以避免連線開銷。
經常檢查所有查詢確實使用了必要的索引。
避免在頻繁更新的表上執行複雜的 select 查詢,以避免與鎖定表有關的由於讀、寫衝突發生的問題。
對於沒有刪除的行操作的 myisam 表,插入操作和查詢操作可以並行進行,因為沒有刪除操作的表查詢期間不會阻塞插入操作.對於確實需要執行刪除操作的表,盡量在空閒時間進行批量刪除操作,避免阻塞其他操作。
充分利用列有預設值的事實。只有當插入的值不同於預設值時,才明確地插入值。這減 少 mysql 需要做的語法分析從而提高插入速度。
對經常訪問的可以重構的資料使用記憶體表,可以顯著提高訪問的效率。
通過複製可以提高某些操作的效能。可以在復**務器中分布客戶的檢索以均分負載。
為了防止備份期間對應用的影響,可以在復**務器上執行備份操作。
表的字段盡量不使用自增長變數,在高併發情況下該字段的自增可能對效率有比較大的影響,推薦通過應用來實現欄位的自增長。
輸出的每一列資訊都會對資料表中的列的資料型別提出優化建議。第二個例子告訴procedure analyse()不要為那些包含的值多於 16 個或者 256 位元組的 enum 型別提出建議。如果沒有這樣的限制,輸出資訊可能很長;enum 定義通常很難閱讀。在對字段型別進行優化時,可以根據統計資訊並結合應用的實際情況對其進行優化。
這裡我們所說的拆分,主要是針對 myisam 型別的表,拆分的方法可以分成兩種情況:
上述資料大多來自於網易的mysql手冊
SQL的一些技巧和優化
一 使用萬用字元技巧 1 不要過度使用萬用字元,如果其他操作符能達到相同的目的,應該使用其他其他操作符。2 在確實需要使用萬用字元時,除非絕對必要,否則不要把他們用在搜尋模式的開始處,把萬用字元置於搜尋模式的開始處,搜尋起來最慢。3 注意萬用字元的位置。如果放錯位置,可能不會返回想要的資料 二 使用...
一些常見的SQL優化方式
建立索引,使用索引加快查詢速度 不要氾濫的使用索引 對於刪除 新增,效能降低 對於查詢 修改,效能提公升 查詢時,不要使用select 因為會對所有列進行查詢,降低效能 盡量使用具體的列名,代替select 優先考慮在 where group by 後使用索引列 查詢的時候盡量不要使用 in 或者n...
一些關於SQL優化的總結
由於這個專案一直都是mysql所以寫點mysql的 1.資料儲存引擎的選擇,myisam 和 innodb 的選擇 innodb 一般都會選擇這個,但是如果真的涉及到一些不涉及增刪的表,可以考慮下myisam 該引擎不支援事務,不支援外來鍵,優點就是訪問速度快,如果都是查詢的話,這個儲存引擎可能會使...