簡介Mysql的索引和視圖

索引

索引相當于字典中的查找條件,常用于快速找出某一列中一特定的值,使用索引可以提升查找的速度。

索引的設計原則

1.選擇唯一性

唯一性索引的值是唯一的,可以更快速的通過該索引來確定某條記錄治唤。例如,學生表中學號是具有唯一性的字段糙申。為該字段建立唯一性索引可以很快的確定某個學生的信息宾添。如果使用姓名的話,可能存在同名現(xiàn)象柜裸,從而降低查詢速度缕陕。

2.為經(jīng)常需要排序、分組和聯(lián)合操作的字段建立索引

經(jīng)常需要ORDER BY疙挺、GROUP BY榄檬、DISTINCT和UNION等操作的字段,排序操作會浪費很多時間衔统。如果為其建立索引鹿榜,可以有效地避免排序操作海雪。

3.為常作為查詢條件的字段建立索引

如果某個字段經(jīng)常用來做查詢條件,那么該字段的查詢速度會影響整個表的查詢速度舱殿。因此奥裸,為這樣的字段建立索引,可以提高整個表的查詢速度沪袭。

4.限制索引的數(shù)目

索引的數(shù)目不是越多越好湾宙。每個索引都需要占用磁盤空間,索引越多冈绊,需要的磁盤空間就越大侠鳄。修改表時,對索引的重構(gòu)和更新很麻煩死宣。越多的索引伟恶,會使更新表變得很浪費時間。

5.盡量使用數(shù)據(jù)量少的索引

如果索引的值很長毅该,那么查詢的速度會受到影響博秫。例如,對一個CHAR(100)類型的字段進行全文檢索需要的時間肯定要比對CHAR(10)類型的字段需要的時間要多眶掌。

6.盡量使用前綴進行索引

如果索引字段的值很長挡育,最好使用值的前綴來索引。例如朴爬,TEXT和BLOG類型的字段即寒,進行全文檢索會很浪費時間。如果只檢索字段的前面的若干個字符召噩,這樣可以提高檢索速度母赵。

7.刪除不再使用或者是很少使用的索引

表中的數(shù)據(jù)被大量更新,或者數(shù)據(jù)的使用方式被改變后蚣常,原有的一些索引可能不再需要市咽。數(shù)據(jù)庫管理員應當定期找出這些索引痊银,將它們刪除抵蚊,從而減少索引對更新操作的影響。

8.遵循最左前綴匹配原則

mysql會一直向右匹配直到遇到范圍查詢(>溯革、<贞绳、between、like)就停止匹配致稀,比如a 1=”” and=”” b=”2” c=”“> 3 and d = 4 如果建立(a,b,c,d)順序的索引冈闭,d是用不到索引的,如果建立(a,b,d,c)的索引則都可以用到抖单,a,b,d的順序可以任意調(diào)整萎攒。

9.=和in可以亂序

比如a = 1 and b = 2 and c = 3 建立(a,b,c)索引可以任意順序遇八,mysql的查詢優(yōu)化器會幫你優(yōu)化成索引可以識別的形式

10.盡量選擇區(qū)分度高的列作為索引

區(qū)分度的公式是count(distinct col)/count(*),表示字段不重復的比例耍休,比例越大我們掃描的記錄數(shù)越少刃永,唯一鍵的區(qū)分度是1,而一些狀態(tài)羊精、性別字段可能在大數(shù)據(jù)面前區(qū)分度就 是0斯够,那可能有人會問,這個比例有什么經(jīng)驗值嗎喧锦?使用場景不同读规,這個值也很難確定,一般需要join的字段我們都要求是0.1以上燃少,即平均1條掃描10條 記錄

11.索引列不能參與計算保持“干凈”

比如from_unixtime(create_time) = ’2014-05-29’就不能使用到索引束亏,原因很簡單,b+樹中存的都是數(shù)據(jù)表中的字段值供汛,但進行檢索時枪汪,需要把所有元素都應用函數(shù)才能比較,顯然成本 太大怔昨。所以語句應該寫成create_time = unix_timestamp(’2014-05-29’);

12.盡量擴展索引不要新建索引

比如表中已經(jīng)有a的索引雀久,現(xiàn)在要加(a,b)的索引,那么只需要修改原來的索引即可

Mysql索引

1.普通索引:最基本的索引沒有任何的限制

2.唯一索引:索引的列必須唯一 沒有重復值 但是允許有空值

3.主鍵索引:特殊的唯一索引趁舀,不能有空值

4.全文索引:MyISAM引擎生成索引非常耗時

5.組合索引:提高查詢效率 多個字段組合 遵循最左原則

索引的類型

1.B-Tree 索引? 最常見的索引類型? 大部分引擎都支持的 索引類型?

2.hash索引? memory 引擎才支持?

3.R-tree 索引? MyISAM 引擎特有的索引類型 主要運用于地理空間數(shù)據(jù)

4.Full-text? ? MyISAM 引擎特有的索引類型 用于全文索引? ? MySQL5.6? innodb引擎 也支持了? 全文索引?

創(chuàng)建索引

alter和create2種方式創(chuàng)建索引赖捌。 注:create不支持創(chuàng)建主鍵索引

?

createindexin_nameont1(name);

showindexfromt1\G; ? 查看所有的索引\G以更好地閱讀體驗閱讀

dropindexin_nameont1;刪除索引

createuniqueindexun_nameont1(name);#保證 字段列不能有重復值 ??

dropindexun_nameont1;

altertablet1addindexin_name(name);#alter方式創(chuàng)建索引

showindexfromt1\G;

altertablet1dropindexin_name;#刪除索引 ??

altertablet1dropprimarykey;#刪除主鍵 索引 必須先消除自增?

altertablet1modifyidint(11)unsignednotnull;#消除自增

?

altertablet1addprimarykey(id);#創(chuàng)建主鍵索引 ?

altertablet1modifyidint(11)unsignednotnullauto_increment;

altertablet1addunique(name);

altertablet1dropindexname;#沒有索引名稱的 唯一索引?

altertablet1adduniqueun_name(name);#唯一索引 有名字?

altertablet1dropindexun_name;

altertablet3addindexname_age(name,age);#組合索引 最左原則? 創(chuàng)建完組合索引以后 where條件中 必須有 name? 或者name age 條件都有? 否則 這個索引失效

Mysql視圖

關于視圖:

視圖包含行和列,就像一個真實的表矮烹。視圖中的字段就是來自一個或多個數(shù)據(jù)庫中的真實的表中的字段越庇。我們可以向視圖添加 SQL 函數(shù)、WHERE 以及 JOIN 語句奉狈,我們也可以提交數(shù)據(jù)卤唉,就像這些來自于某個單一的表。

注釋:數(shù)據(jù)庫的設計和結(jié)構(gòu)不會受到視圖中的函數(shù)仁期、where 或 join 語句的影響桑驱。

view

?

createviewv_t1asselect*fromt1whereid>3andid <8;#把經(jīng)常查詢的數(shù)據(jù)放到臨時表中 ? 下次直接從臨時表 讀取即可 不用每次都得 數(shù)據(jù)庫參與運算?

showtables;#會看到一個v_t1 臨時表??

select*fromv_t1;

#主表存在? 視圖存在 ? 主表丟失 視圖丟失? 主表恢復? 視圖恢復?

dropviewv_t1;#刪除視圖??

#查看創(chuàng)建視圖的過程

showcreateviewv_t1\G;## \G以更好地閱讀體驗閱讀 ?

?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市跛蛋,隨后出現(xiàn)的幾起案子熬的,更是在濱河造成了極大的恐慌,老刑警劉巖赊级,帶你破解...
    沈念sama閱讀 217,277評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件押框,死亡現(xiàn)場離奇詭異,居然都是意外死亡理逊,警方通過查閱死者的電腦和手機橡伞,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評論 3 393
  • 文/潘曉璐 我一進店門盒揉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人兑徘,你說我怎么就攤上這事预烙。” “怎么了道媚?”我有些...
    開封第一講書人閱讀 163,624評論 0 353
  • 文/不壞的土叔 我叫張陵扁掸,是天一觀的道長。 經(jīng)常有香客問我最域,道長谴分,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,356評論 1 293
  • 正文 為了忘掉前任镀脂,我火速辦了婚禮牺蹄,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘薄翅。我一直安慰自己沙兰,他們只是感情好,可當我...
    茶點故事閱讀 67,402評論 6 392
  • 文/花漫 我一把揭開白布翘魄。 她就那樣靜靜地躺著鼎天,像睡著了一般。 火紅的嫁衣襯著肌膚如雪暑竟。 梳的紋絲不亂的頭發(fā)上斋射,一...
    開封第一講書人閱讀 51,292評論 1 301
  • 那天,我揣著相機與錄音但荤,去河邊找鬼罗岖。 笑死,一個胖子當著我的面吹牛腹躁,可吹牛的內(nèi)容都是我干的桑包。 我是一名探鬼主播,決...
    沈念sama閱讀 40,135評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼纺非,長吁一口氣:“原來是場噩夢啊……” “哼哑了!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起铐炫,我...
    開封第一講書人閱讀 38,992評論 0 275
  • 序言:老撾萬榮一對情侶失蹤垒手,失蹤者是張志新(化名)和其女友劉穎蒜焊,沒想到半個月后倒信,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,429評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡泳梆,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,636評論 3 334
  • 正文 我和宋清朗相戀三年鳖悠,在試婚紗的時候發(fā)現(xiàn)自己被綠了榜掌。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,785評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡乘综,死狀恐怖憎账,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情卡辰,我是刑警寧澤胞皱,帶...
    沈念sama閱讀 35,492評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站九妈,受9級特大地震影響反砌,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜萌朱,卻給世界環(huán)境...
    茶點故事閱讀 41,092評論 3 328
  • 文/蒙蒙 一宴树、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧晶疼,春花似錦酒贬、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至寒匙,卻和暖如春耐齐,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背蒋情。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評論 1 269
  • 我被黑心中介騙來泰國打工埠况, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人棵癣。 一個月前我還...
    沈念sama閱讀 47,891評論 2 370
  • 正文 我出身青樓辕翰,卻偏偏與公主長得像,于是被迫代替她去往敵國和親狈谊。 傳聞我的和親對象是個殘疾皇子喜命,可洞房花燭夜當晚...
    茶點故事閱讀 44,713評論 2 354

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