溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

MySQL索引、視圖、存儲(chǔ)過程

發(fā)布時(shí)間:2020-02-25 17:23:38 來源:網(wǎng)絡(luò) 閱讀:231 作者:wx5d8ab22a0be5a 欄目:MySQL數(shù)據(jù)庫

一、索引的概念
數(shù)據(jù)庫中的索引與書籍中的目錄類似

  • 在一本書中,無需閱讀整本書,利用目錄就可以快速查找所需信息
  • 書中的目錄是一個(gè)詞語列表,其中表明了包含各個(gè)詞的頁碼
    數(shù)據(jù)庫索引
  • 在數(shù)據(jù)庫中,索引使數(shù)據(jù)庫程序無須對(duì)整個(gè)表進(jìn)行掃描,就可以在其中找到所需數(shù)據(jù)
  • 數(shù)據(jù)庫中的索引是某個(gè)表中一列或者若干列值得集合,以及物理標(biāo)識(shí)這些值得數(shù)據(jù)頁的邏輯指針清單
    索引優(yōu)點(diǎn):可以快速找到數(shù)據(jù)
    缺點(diǎn):占用硬盤資源
    二、索引的作用
  • 設(shè)置了合適的索引之后,數(shù)據(jù)庫利用各種快速的定位技術(shù),能夠大大加快查詢速率
  • 特別是當(dāng)表很大時(shí),或者查詢涉及到多個(gè)表時(shí),使用索引可使查詢加快成千倍
  • 可以降低數(shù)據(jù)庫的IO讀寫成本,并且索引還可以降低數(shù)據(jù)庫的排序成本
  • 通過創(chuàng)建唯一性索引保證數(shù)據(jù)表數(shù)據(jù)的唯一性
  • 可以加快表與表之間的連接
  • 在使用分組和排序時(shí),可大大減少分組和排序時(shí)間
    三、索引的分類
    普通索引
  • 這是最基本的索引類型,而且它沒有唯一性之類的限制
    唯一性索引
  • 這種索引和前面的“普通索引”基本相同,但有一個(gè)區(qū)別:索引列的所有值都只能出現(xiàn)一次,即必須唯一
  • 唯一性索引允許為空,但是只能有一次為空
    主鍵
  • 主鍵是一種唯一性索引,但它必須指定為“PRIMARY KEY”
    全文索引
  • MySQL從3.23.23版開始支持全文索引和全文檢索。在MySQL中,全文索引的索引類型為FULLTEXT,全文索引可以在VARCHAR或者TEXT類型的列上創(chuàng)建
    單列索引與多列索引
  • 索引可以是單列上創(chuàng)建的索引,也可以是在多列上創(chuàng)建的索引
    四、創(chuàng)建索引的原則依據(jù)
  • 表的主鍵、外鍵必須有索引
  • 數(shù)據(jù)量超過300行的表應(yīng)該有索引
  • 經(jīng)常與其他表進(jìn)行連接的表,在連接字段(外鍵)上應(yīng)該建立索引
  • 經(jīng)常出現(xiàn)在Where子句中的字段,特別是大表的字段,應(yīng)該建立索引
  • 索引應(yīng)該建在選擇性高的字段上
  • 索引應(yīng)該建在小字段上,對(duì)于大的文本字段甚至超長字段,不要建索引
  • 針對(duì)大的文本字段甚至超長字段,建立全文索引,fulltext
  • 唯一性太差的字段不適合建立索引
  • 更新太頻繁的字段不適合創(chuàng)建索引
    五、創(chuàng)建索引的方法
  • 根據(jù)企業(yè)需求選擇了合適的索引之后,可使用CREATE INDEX創(chuàng)建索引
  • CREATE INDEX加上各個(gè)索引關(guān)鍵字便可創(chuàng)建各個(gè)類型的索引
    實(shí)操過程
    MySQL索引、視圖、存儲(chǔ)過程
    MySQL索引、視圖、存儲(chǔ)過程
    MySQL索引、視圖、存儲(chǔ)過程
    1.創(chuàng)建普通索引
    MySQL索引、視圖、存儲(chǔ)過程
    MySQL索引、視圖、存儲(chǔ)過程
    刪除索引
    MySQL索引、視圖、存儲(chǔ)過程
    2.創(chuàng)建唯一索引
    MySQL索引、視圖、存儲(chǔ)過程
    刪除索引
    MySQL索引、視圖、存儲(chǔ)過程
    “alter table”創(chuàng)建唯一索引
    MySQL索引、視圖、存儲(chǔ)過程
    還有一種方式就是在創(chuàng)建表的時(shí)候,就定義索引。
    MySQL索引、視圖、存儲(chǔ)過程
    MySQL索引、視圖、存儲(chǔ)過程
    MySQL索引、視圖、存儲(chǔ)過程
    創(chuàng)建hobby表
    MySQL索引、視圖、存儲(chǔ)過程
    給hobby表添加數(shù)據(jù)
    MySQL索引、視圖、存儲(chǔ)過程
    將兩張表關(guān)聯(lián)在一起
    MySQL索引、視圖、存儲(chǔ)過程
    MySQL索引、視圖、存儲(chǔ)過程
    這就是典型的多表相連查詢
    避免冗余的代碼可以為表取別名
    MySQL索引、視圖、存儲(chǔ)過程
    視圖概述
    是一張?zhí)摂M的表,數(shù)據(jù)不存在視圖中,只是真實(shí)表的映射數(shù)據(jù)。利用條件篩選、分組、排序等產(chǎn)生出一個(gè)結(jié)果集,保存在內(nèi)存中,并且做成持久化保存。(只保存映射)
    視圖占資源少,相當(dāng)于軟連接,快捷方式
    真實(shí)表中數(shù)據(jù)發(fā)生變化,視圖也會(huì)隨之發(fā)生相應(yīng)的變化。
    create view 視圖名稱 as 查詢語句(select id,name,age) from 表名 where(條件) id=1 or id=5;

    視圖的作用:可以根據(jù)不同的用戶,創(chuàng)建不同的視圖。根據(jù)權(quán)限查看不同的視圖;加強(qiáng)安全性;方便sql操作。
    實(shí)操
    創(chuàng)建視圖
    MySQL索引、視圖、存儲(chǔ)過程
    查看視圖
    MySQL索引、視圖、存儲(chǔ)過程
    存儲(chǔ)過程概述
    存儲(chǔ)過程:存儲(chǔ)過程多用于軟件開發(fā)方向
    防止代碼在網(wǎng)絡(luò)傳輸過程中被截獲,做了安全性保障
    原始狀態(tài):代碼中需要嵌入sql語句:通過連接驅(qū)動(dòng)(java就是jdbc)————把sql語句作為參數(shù),傳遞給mysql數(shù)據(jù)庫進(jìn)行執(zhí)行。
    存儲(chǔ)過程是寫在數(shù)據(jù)庫中,并不是程序中。
    程序是通過調(diào)用存儲(chǔ)過程名稱去觸發(fā)操作,(類似shell中的函數(shù)),
    優(yōu)點(diǎn):代碼量優(yōu)化,減少代碼量,
    傳輸安全,隱藏sql語句
    網(wǎng)絡(luò)優(yōu)化。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI