MySQL优化建议汇总~~~
MySQL優化建議匯總~~~
1、將經常要用到的字段(比如經常要用這些字段來排序,或者用來做搜索),則最好將這些字段設為索引
2、字段的種類盡可能用int或者tiny int類型。另外字段盡可能用not null
3、當然無可避免某些字段會用到text,varchar等字符類型,最好將text字段單獨出另外一個表出來(用主鍵關聯好)(能用枚舉的就盡量不要用text,因為在MySQL中,ENUM類型被當作數值型數據來處理,而數值型數據被處理起來的速度要比文本類型快得多)
4、 字段的類型,以及長度,是一個很考究開發者優化功力的一個方面。如果表數據有一定的量了,不妨用PROCEDURE ANALYSE()命令來取得字段的優化建議!(在phpmyadmin里可以在查看表時,點擊‘Propose table struture’來查看這些建議)如此可以讓你的表字段結果趨向完善。
5、select * 盡量少用,你想要什么字段,就select什么字段出來,不要老是用*號!同理,只要一行數據時盡量使用limit 1
6、絕對不要輕易用order by rand(),很可能會導致mysql的災難
7、每個表都應該設置一個ID主鍵,最好的是一個INT型,并且設置上自動增加的AUTO_INCREMENT標志,這點其實應該作為設計表結構的第一件必然要做的事!
8、拆分大的DELETE或INSERT語句,因為這兩個操作是會鎖表的,表一鎖住了,別的操作都進不來了,就我來說有時候我寧愿用for循環來一個個執行這些操作
9、不要用永久連接mysql_pconnet();除非你真的非常肯定你的程序不會發生意外,不然很可能也會導致你的mysql死掉
10、永遠別用復雜的mysql語句來顯示你的聰明,就我來說看到一次關聯了三四個表的語句,只會讓人覺得很不靠譜(MySQL語句能簡單就簡單點)
參考博文:https://mp.weixin.qq.com/s/4U8xw9Q0cEStNfArjXQCIQ
了解一下Oracle中sql語句的執行過程,也有利于掌握Oracle的優化:
ORACLE將執行過的SQL語句存放在內存的共享池(shared buffer pool)中,可以被所有的數據庫用戶共享。當執行一個SQL語句時,如果它和之前的執行過的語句完全相同,ORACLE就能很快獲得已經被解析的語句以及最好的執行路徑.。這個功能大大地提高了SQL的執行性能并節省了內存的使用。
Oracle中SQL語句執行過程:
?
1.當一用戶第一次提交一個SQL表達式時,Oracle會將這SQL進行Hard parse,檢查語法、表名、字段名等相關信息,這過程會花比較長的時間,因為它要分析語句的語法與語義。然后獲得最優化后的執行計劃,并在內存中分配一定的空間保存該語句與對應的執行計劃等信息。
?
2.當用戶第二次請求或多次請求時,Oracle會自動找到先前的語句與執行計劃,而不會進行Hard parse,而是直接進行Soft parse(把語句對應的執行計劃調出,然后執行),從而減少數據庫的分析時間。
?
那么在第一次運行的過程中,ORACLE sql?的處理過程大致如下:
?
1.運用HASH算法,得到一個HASH值。
?
2.到shared pool?中的?library cache?中查找是否有相同的HASH值,如果存在,則無需硬解析,進行軟解析。
?
3.如果shared pool不存在此HASH值,則進行語法檢查,查看是否有語法錯誤。
?
4.如果沒有語法錯誤,就進行語義檢查,檢查該SQL引用的對象是否存在,該用戶是否具有訪問該對象的權限。
?
5.如果沒有語義錯誤,對該SQL進行解析,生成解析樹,執行計劃。
?
6.生成ORACLE能運行的二進制代碼,運行該代碼并且返回結果給用戶。
?
注意:Oracle中只能完全相同的語句,包大小寫、空格、換行都要求一樣時,才會重復使用以前的分析結果與執行計劃。
?
分析過程如下圖:
?
對于大量的、頻繁訪問的SQL語句,如果不采用Bind?變量的方式,Oracle會花費大量的Shared latch與CPU在做Hard parse處理。
?
所以,要盡量提高語句的重用率,減少語句的分析時間,通過了解Oracle SQL語句的分析過程可以明白Oracle的內部處理邏輯,并在設計與實現上進行SQL語句優化。
參考博文:https://mp.weixin.qq.com/s/O6bWmIOFk6KGrrW4uBeMTA
幾種常用的SQL優化技巧。
WHERE下多個過濾條件的排列順序
重復記錄的處理
WHERE、HAVING和ON的比較
靈活使用EXISTS關鍵字
UNION ALL和UNION
表關聯的優化
參考博文:https://mp.weixin.qq.com/s/NfwWibH7JO1w98OiHJcxyg(有實例,挺詳細的)
總結
以上是生活随笔為你收集整理的MySQL优化建议汇总~~~的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 解决eclipse刚启动卡死的问题~~~
- 下一篇: linux 智联 网卡设置,Linux初