mysql 需要知道的常識

查閱其他文章做的總結(jié),記錄一下

character set和collation簡單理解

  • character set 字符集
    即字符集,常用的UTF-8毡们、GB2312、GB18030是對Unicode的一套編碼
    軟件國際化是大勢所趨昧辽,所以Unicode是國際化最佳的選擇衙熔。當(dāng)然為了提高性能,有些情況下還是使用latin1比較好搅荞。

  • MySQL有兩個(gè)支持Unicode的character set:
    ucs2:使用16bits來表示一個(gè)Unicode字符红氯。
    utf8:使用1~3bytes來表示一個(gè)Unicode字符框咙。
    選擇哪個(gè)character set視情況而定,例如utf8表示latin字符只需要一個(gè)字節(jié)痢甘,所以當(dāng)用戶數(shù)據(jù)大部分為英文等拉丁字符時(shí)喇嘱,使用utf8比較節(jié)省數(shù)據(jù)庫的存儲空間

  • utf8和utf8mb4的區(qū)別
    MySQL在5.5.3之后增加了這個(gè)utf8mb4的編碼,mb4就是most bytes 4的意思塞栅,專門用來兼容四字節(jié)的unicode者铜。好在utf8mb4是utf8的超集,除了將編碼改為utf8mb4外不需要做其他轉(zhuǎn)換放椰。當(dāng)然作烟,為了節(jié)省空間,一般情況下使用utf8也就夠了

那上面說了既然utf8能夠存下大部分中文漢字,那為什么還要使用utf8mb4呢?
原來mysql支持的 utf8 編碼最大字符長度為 3 字節(jié)砾医,如果遇到 4 字節(jié)的寬字符就會插入異常了拿撩。三個(gè)字節(jié)的 UTF-8 最大能編碼的 Unicode 字符是 0xffff,也就是 Unicode 中的基本多文種平面(BMP)如蚜。也就是說压恒,任何不在基本多文本平面的 Unicode字符,都無法使用 Mysql 的 utf8 字符集存儲错邦。包括 Emoji 表情(Emoji 是一種特殊的 Unicode 編碼探赫,常見于 ios 和 android 手機(jī)上),和很多不常用的漢字撬呢,以及任何新增的 Unicode 字符等等(utf8的缺點(diǎn))

collation

指定數(shù)據(jù)集如何排序期吓,以及字符串的比對規(guī)則
每個(gè)character set會對應(yīng)一定數(shù)量的collation。查看方法是在MySQL的Console下輸入
show collation;
eg:
utf8_danish_ci
ci是case insensitive的縮寫倾芝,cs是case sensitive的縮寫讨勤。即,指定大小寫是否敏感晨另。
utf8_bin是將字符串中的每一個(gè)字符用二進(jìn)制數(shù)據(jù)存儲潭千,區(qū)分大小寫。

utf8_general_ci借尿,utf8_unicode_ci刨晴,utf8_danish_ci有什么區(qū)別
同一個(gè)character set的不同collation的區(qū)別在于排序、字符串對比的準(zhǔn)確度(相同兩個(gè)字符在不同國家的語言中的排序規(guī)則可能是不同的)以及性能路翻。
例如:
utf8_general_ci在排序的準(zhǔn)確度上要遜于utf8_unicode_ci狈癞,當(dāng)然,對于英語用戶應(yīng)該沒有什么區(qū)別茂契。但性能上(排序以及比對速度)要略優(yōu)于utf8_unicode_ci.例如前者沒有對德語中?=ss的支持蝶桶。而utf8_danish_ci相比utf8_unicode_ci增加了對丹麥語的特殊排序支持

索引

  • 1、索引類型
    MYSQL索引有四種
    PRIMARY(唯一且不能為空掉冶;一張表只能有一個(gè)主鍵索引)真竖、
    它可以提高查詢效率脐雪,并提供唯一性約束。一張表中只能有一個(gè)主鍵恢共。被標(biāo)志為自動增長的字段一定是主鍵战秋,但主鍵不一定是自動增長。一般把主鍵定義在無意義的字段上(如:編號)讨韭,主鍵的數(shù)據(jù)類型最好是數(shù)值

  • INDEX(普通索引)

  • UNIQUE(唯一性索引)脂信、

  • FULLTEXT(全文索引:用于搜索很長一篇文章的時(shí)候,效果最好透硝。用在比較短的文本狰闪,如果就一兩行字的,普通的 INDEX 也可以)
    舊版的MySQL的全文索引只能用在MyISAM表格的char蹬铺、varchar和text的字段上。
    不過新版的MySQL5.6.24上InnoDB引擎也加入了全文索引

  • 索引方法
    mysql的兩種索引方法(Innodb和MyISAM默認(rèn)的索引是Btree索引):
    1).HASH(用于對等比較秉撇,如"="和" <=>") //<=> 安全的比對 甜攀,用與對null值比較,語義類似is null()
    2).BTREE(用于非對等比較琐馆,比如范圍查詢)>规阀,>=,<瘦麸,<=谁撼、BETWEEN、Like

  • 索引使用注意事項(xiàng):
    1.索引會忽略null值滋饲,所以我們在設(shè)計(jì)數(shù)據(jù)庫的時(shí)候設(shè)置為為NOT NULL;
    2.短索引(給索引設(shè)置長度)不僅能夠提高查詢速度厉碟,而且能節(jié)省I/O操作。
    3.Mysql在查詢的時(shí)候只會使用一個(gè)索引屠缭,但不是一個(gè)字段
    4.不鼓勵使用like對索引操作:like"%aaa%"不會使用索引箍鼓;但like“aaa%”會使用索引。即可以對固定起始值模糊查詢
    5.不適用于否地操作(not in , <>, !=呵曹,or) //用到or地方款咖,盡量用union,或者程序兩次查找
    6.如果創(chuàng)建了索引奄喂,但是查詢語句并沒有使用铐殃,則會使原來的效率更差

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市跨新,隨后出現(xiàn)的幾起案子富腊,更是在濱河造成了極大的恐慌,老刑警劉巖域帐,帶你破解...
    沈念sama閱讀 218,386評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蟹肘,死亡現(xiàn)場離奇詭異词疼,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)帘腹,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,142評論 3 394
  • 文/潘曉璐 我一進(jìn)店門贰盗,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人阳欲,你說我怎么就攤上這事舵盈。” “怎么了球化?”我有些...
    開封第一講書人閱讀 164,704評論 0 353
  • 文/不壞的土叔 我叫張陵秽晚,是天一觀的道長。 經(jīng)常有香客問我筒愚,道長赴蝇,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,702評論 1 294
  • 正文 為了忘掉前任巢掺,我火速辦了婚禮句伶,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘陆淀。我一直安慰自己考余,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,716評論 6 392
  • 文/花漫 我一把揭開白布轧苫。 她就那樣靜靜地躺著楚堤,像睡著了一般。 火紅的嫁衣襯著肌膚如雪含懊。 梳的紋絲不亂的頭發(fā)上身冬,一...
    開封第一講書人閱讀 51,573評論 1 305
  • 那天,我揣著相機(jī)與錄音岔乔,去河邊找鬼吏恭。 笑死,一個(gè)胖子當(dāng)著我的面吹牛重罪,可吹牛的內(nèi)容都是我干的樱哼。 我是一名探鬼主播,決...
    沈念sama閱讀 40,314評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼剿配,長吁一口氣:“原來是場噩夢啊……” “哼搅幅!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起呼胚,我...
    開封第一講書人閱讀 39,230評論 0 276
  • 序言:老撾萬榮一對情侶失蹤茄唐,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體沪编,經(jīng)...
    沈念sama閱讀 45,680評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡呼盆,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,873評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了蚁廓。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片访圃。...
    茶點(diǎn)故事閱讀 39,991評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖相嵌,靈堂內(nèi)的尸體忽然破棺而出腿时,到底是詐尸還是另有隱情,我是刑警寧澤饭宾,帶...
    沈念sama閱讀 35,706評論 5 346
  • 正文 年R本政府宣布批糟,位于F島的核電站,受9級特大地震影響看铆,放射性物質(zhì)發(fā)生泄漏徽鼎。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,329評論 3 330
  • 文/蒙蒙 一弹惦、第九天 我趴在偏房一處隱蔽的房頂上張望否淤。 院中可真熱鬧,春花似錦肤频、人聲如沸叹括。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,910評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至净嘀,卻和暖如春报咳,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背挖藏。 一陣腳步聲響...
    開封第一講書人閱讀 33,038評論 1 270
  • 我被黑心中介騙來泰國打工暑刃, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人膜眠。 一個(gè)月前我還...
    沈念sama閱讀 48,158評論 3 370
  • 正文 我出身青樓岩臣,卻偏偏與公主長得像,于是被迫代替她去往敵國和親宵膨。 傳聞我的和親對象是個(gè)殘疾皇子架谎,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,941評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 摘要:在MySQL的使用過程中,了解字符集辟躏、字符序的概念谷扣,以及不同設(shè)置對數(shù)據(jù)存儲、比較的影響非常重要捎琐。不少同學(xué)在日...
    暖夏未眠丶閱讀 786評論 0 2
  • 1. COLLATE是用來做什么的会涎? 1.1 character set & collation定義 字符集(ch...
    西柚醬_閱讀 3,953評論 0 1
  • MySQL使用時(shí)裹匙,有一件很痛苦的事情肯定是結(jié)果亂碼。將編碼格式都設(shè)置為UTF8可以解決這個(gè)問題末秃,我們今天來說下為什...
    勤奮的碼農(nóng)閱讀 664評論 0 1
  • 書包蛔溃,我沒用過 剛剛看到了一個(gè)有關(guān)“麻袋”書包的新聞绰沥,感覺心里怪怪的。然后回憶起我的讀書生涯贺待,竟然發(fā)現(xiàn)徽曲,原...
    覃榜言閱讀 522評論 7 15
  • 夜很黑 風(fēng)很冷 刀很快 人 很孤獨(dú) 你不該來,司馬建國 是的麸塞,我不該來秃臣,你說的很對,慕容廣場 那你為什么還來哪工,司馬...
    羅三裁閱讀 413評論 0 1