国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > MySQL > 正文

MySQL使用小坑總結(一)

2024-07-24 12:59:34
字體:
來源:轉載
供稿:網友

1、數據庫中的字段類型不要使用long型,否則會造成查詢緩慢,可以選擇BigInt類型來代替。

2、避免select *。

3、如果表結構中字段定義的類型與應用傳入的類型不一致,這時候可能會發生隱式轉換;兩個表join的時候,如果字符集定義不一致,也會導致隱式轉換,MySQL中定義的隱式轉換規則如下所示:

a、兩個參數至少有一個是NULL時,比較的結果也是NULL,例外是使用<=>對兩個NULL做比較時會返回1,這兩種情況都不需要做類型轉換;

b、兩個參數都是字符串,會按照字符串來比較,不做類型轉換;

c、兩個參數都是整數,按照整數來比較,不做類型轉換;

d、十六進制的值和非數字做比較死活,會被當作二進制串;

e、有一個參數是TIMESTAMP或DATETIME,并且另外一個參數是常量,常量會被轉換為timestamp;

f、有一個參數是decimal類型,如果另外一個參數是decimal或者整數,會將整數轉換為decimal后進行比較,如果另外一個參數是浮點數,則會把decimal轉換為浮點數進行比較;

g、所有其它情況下,兩個參數都會被轉換為浮點數再進行比較;

隱式轉換會使索引失效,導致查詢無法命中索引。

4、limit m,n

mysql翻頁查詢使用下面的語法:select * from table limit m,n;

其中m是指記錄開始的index,數據庫中的第一條記錄標記為0,n是指從第m+1條記錄開始,取n條數據。

比如select * from table limit 2,4,該語句取出第3條至第6條數據,共4條記錄。

需要注意的是普通的limit M,N的翻頁寫法,在越往后翻頁的過程中速度越慢,原因是由于mysql會讀取表中的前M+N條數據,M越大,則性能越差??梢赃x擇的優化方式是使用關聯子查詢進行優化,如下面的實驗,我們先后用上下兩條語句查詢數據庫的100條數據:

優化前:select * from table limit 10000,100;優化后:select * from hregiondb a,(select id from hregiondb limit 10000,100) b where a.id=b.id

兩條查詢語句的耗時如下圖,可見優化后查詢的速度快了不少。

5、刪除表中數據

如果要清空表中的所有記錄,可以使用如下兩種方式:

方式一:delete from table方式二:truncate table其中delete的方式可以返回被刪除的記錄數,但執行速度不快,相反,truncate不能返回被刪除的記錄條數,但是執行速度快。

推薦使用truncate方式,這是因為binlog有個row格式,delete時會把所有被操作數據的整行都記錄在binlog里,如果表中數據量很大,會造成binlog的急劇膨脹。

此外采用先truncate后drop的方式也可以減少系統表被鎖定的時間。

7、索引要仔細設計,保證索引有很好的過濾性,這是因為索引本身也占消耗。什么叫過濾性好的索引,舉個例子,比如一張職工表,那么性別字段就無需建立索引。

8、optimize table

mysql中刪除了數據時,被刪除數據占用的磁盤空間并沒有馬上被釋放,而是被寫入了一個標記為,只有執行了optimize之后,這部分空間包括索引位才會被釋放出來。

9、可以使用explain命令查看sql語句的執行計劃

我們使用上面那條語句來看看explain命令的結果。

explain select * from hregiondb a,(select id from hregiondb limit 10000,100) b where a.id=b.id結果截圖如下:

各個列的解釋簡列如下:

1、select_type,select類型,simple表示最簡單的select,PRimary出現在有子查詢的語句中,最外面的select查詢就是primary;

2、table,顯示這一行的數據是關于哪張表的;

3、type,顯示連接使用了何種類型,從最好到最差的連接類型為const、eq_reg、ref、range、indexhe和ALL;

4、possible_keys,顯示可能應用在該表中的索引;

5、key,實際使用的索引;

6、key_len,使用的索引的長度,該值越小越好;

7、ref,顯示索引的哪一列被使用了;

8、rows,mysql認為必須檢查的用來返回請求數據的行數;

9、Extra,額外信息,如果是Using temporary或者Using filesort,意味著mysql不會使用索引,這樣的檢索會很慢;


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 湘西| 文化| 高州市| 英吉沙县| 卫辉市| 西丰县| 湖南省| 青海省| 西乌珠穆沁旗| 神农架林区| 高邮市| 丘北县| 府谷县| 宜良县| 开鲁县| 康保县| 收藏| 合水县| 碌曲县| 政和县| 伊金霍洛旗| 家居| 高安市| 冀州市| 平塘县| 金川县| 嘉善县| 时尚| 沁水县| 永城市| 嵩明县| 北碚区| 丽江市| 新邵县| 保靖县| 原平市| 临颍县| 格尔木市| 漳州市| 双峰县| 庆阳市|