日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

MySQL优化建议汇总~~~

發布時間:2025/3/12 数据库 14 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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的執行性能并節省了內存的使用。



OracleSQL語句執行過程:

?

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 latchCPU在做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优化建议汇总~~~的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。