《Mysql應(yīng)用深入研究mysql中的varchar和limit(容易被忽略的知識)》要點:
本文介紹了Mysql應(yīng)用深入研究mysql中的varchar和limit(容易被忽略的知識),希望對您有用。如果有疑問,可以聯(lián)系我們。
MYSQL入門為什么標(biāo)題要起這個名字呢?commen sence指的是那些大家都應(yīng)該知道的事情,但往往大家又會會略這些東西,或者對這些東西一知半解,今天我總結(jié)下自己在mysql中遇到的一些commen sense類型的問題.
MYSQL入門 1、varchar(5)可以存儲多少個漢字,多少個字母數(shù)字?
MYSQL入門 相信有好多人應(yīng)該跟我一樣,對這個已經(jīng)很熟悉了,根據(jù)經(jīng)驗我們能很快的做出決定,比如說用varchar(200)去存儲url等等,但是,即使你用了很多次也很熟悉了,也有可能對上面的問題做出錯誤的回答.
MYSQL入門 這個問題我查了好多資料,有的人說是可以存儲5個字符,2.5個漢字(每個漢字占用兩個字節(jié)的話),有的人說這個要區(qū)分版本,5.0是個分界限,5.0之前是前面說的那樣,5.0之后是可以存儲5個“字”,不區(qū)分是數(shù)字、英文、漢字,果真是這樣嗎,我們來做個實驗:
MYSQL入門
MYSQL入門 可以看出varchar(5)中的5代表的是5個“字”,而不是5個字節(jié)(bytes),當(dāng)我們存儲長度超過制定長度的時候會將超過的部分“咔嚓”掉,我的mysql版本是5.6,字符集(charset)utf8和gbk是一樣的.
MYSQL入門
MYSQL入門其他版本我電腦上沒有,去官方文檔看看有沒有什么說明,在官方文檔中查了半天終于發(fā)現(xiàn)了點區(qū)別:
MYSQL入門下面這段來自http://dev.mysql.com/doc/refman/4.1/en/char.html,是對mysq4.1的說明:
MYSQL入門再看看其他版本的類似的說明:
MYSQL入門 顯而易見了,官方文檔說了,mysql版本小于4.1的時候存儲的時候符合說法:varchar(5)保存5個bytes,及5個英文數(shù)字或者2.5個漢字(假設(shè)一個漢字2個字節(jié));
MYSQL入門mysql版本大于等于4.1的時候varchar(5)中的5不再是字節(jié)數(shù)了,應(yīng)該理解為“字”這里的字的意思是一個漢字和一個英文或者數(shù)字“相同對待”
MYSQL入門 2、mysql中的limit,你真的會用嗎?
MYSQL入門 你在項目中怎么使用limit?limit num?還是limit num1,num2?還是其他的?要知道limit使用不同的形式性能差距很大的.
MYSQL入門 我自己測試了下,在一張innodb表中去使用limit,表中10000條數(shù)據(jù),四個字段,id(int)、time(int)、title(varchar)、body(mediumtext),大小大約170M左右,首先關(guān)掉查詢緩存,免得查詢緩存對查詢時間有影響,這里要注意time字段上面加了索引,
MYSQL入門 b、SELECT id,TIME,title FROM cnblogs WHERE TIME>=1315646940 ORDER BY TIME ASC LIMIT 10
MYSQL入門???? c、 SELECT id,TIME,title FROM cnblogs ORDER BY TIME ASC LIMIT 3000,10
MYSQL入門執(zhí)行順序a,b,c,a,b,c,c,a,a(這里需要注意下,雖然我關(guān)閉了緩存,但是上一次的查詢還是會緩存,這個可以從Query profiler中看出來,所以進(jìn)行交叉執(zhí)行),使用下面的語句查看結(jié)果
MYSQL入門
MYSQL入門從上面的語句執(zhí)行時間分析可以看出,不考慮緩存因素,當(dāng)使用limit的時候,"limit begin,num"這種形式比"limit num"這種形式效率低很多,因此,在使用的時候盡可能的使用第二種形式,比如說要循環(huán)獲取一個表里面的數(shù)據(jù),一次取出來內(nèi)從放不下,這個時候就要依照id(或者其他排序字段)進(jìn)行l(wèi)imit了,我們就可以通過獲取上次的該字段臨界值作為下次取數(shù)據(jù)的最小值,使用limit num這種形式效率會高很多.
維易PHP培訓(xùn)學(xué)院每天發(fā)布《Mysql應(yīng)用深入研究mysql中的varchar和limit(容易被忽略的知識)》等實戰(zhàn)技能,PHP、MYSQL、LINUX、APP、JS,CSS全面培養(yǎng)人才。
轉(zhuǎn)載請注明本頁網(wǎng)址:
http://www.snjht.com/jiaocheng/12699.html