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