MySQL索引、視圖、存儲過程

一、索引的概念
數據庫中的索引與書籍中的目錄類似

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

    視圖的作用:可以根據不同的用戶,創建不同的視圖。根據權限查看不同的視圖;加強安全性;方便sql操作。
    實操
    創建視圖
    MySQL索引、視圖、存儲過程
    查看視圖
    MySQL索引、視圖、存儲過程
    存儲過程概述
    存儲過程:存儲過程多用於軟件開發方向
    防止代碼在網絡傳輸過程中被截獲,做了安全性保障
    原始狀態:代碼中需要嵌入sql語句:通過連接驅動(java就是jdbc)————把sql語句作爲參數,傳遞給mysql數據庫進行執行。
    存儲過程是寫在數據庫中,並不是程序中。
    程序是通過調用存儲過程名稱去觸發操作,(類似shell中的函數),
    優點:代碼量優化,減少代碼量,
    傳輸安全,隱藏sql語句
    網絡優化。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章