青草久久影院-青草久久伊人-青草久久久-青草久久精品亚洲综合专区-SM双性精跪趴灌憋尿调教H-SM脚奴调教丨踩踏贱奴

17站長網

17站長網 首頁 數據庫 Mysql 查看內容

mysql索引與存儲引擎

2023-3-16 15:37| 查看: 1708 |來源: 互聯網

本篇博客講的是MySQL的索引的功能和使用 , 以及存儲引擎的基本簡介一. mysql索引 索引的簡介和作用 索引在MySQL中叫做鍵 , 是存儲引擎用于快速找到記錄的一 ...

本篇博客講的是MySQL的索引的功能和使用 , 以及存儲引擎的基本簡介

 一. mysql索引

       索引的簡介和作用

      索引在MySQL中叫做"鍵" , 是存儲引擎用于快速找到記錄的一種數據結構 . 索引對良好的性能非常關鍵 , 尤其是當表中的數據量越來越大時 , 索引對于性能的影響愈來愈發重要 .

      作用 : 通過一定的算法將數據庫中的記錄按一定的規律進行分組 , 這樣查信息時可以縮小數據的搜索范圍 , 從而提高溜了查詢效率

      用生活實例來說 , 索引就好像書的目錄 , 清單上的列表 ; 好比人去吃火鍋 , 當菜單拿到客戶手上 , 客戶可以根據菜單上的分類(海鮮 , 蔬菜類 , 肉類 , 飲料類等) , 根據自己的口味能第一時間找到自己想吃的菜 .

索引的分類

索引可分為 : 普通索引 , 唯一索引 , 全文索引 , 單列索引 , 多列索引 , 空間索引

語法格式:

CREATE TABLE 表名 (

       字段名1  數據類型 [完整性約束條件…],

       字段名2  數據類型 [完整性約束條件…],

       [UNIQUE | FULLTEXT | SPATIAL ]   INDEX | KEY

[索引名]  (字段名[(長度)]  [ASC |DESC])

示例 :

創建一個INDEX普通索引

CREATE TABLE dept(

     dept_id INT,

     dept_name VARCHAR(30) ,

     comment VARCHAR(50),

     index  (dept_name)              # 將表中的dept_name字段指定為普通索引字段

);

創建一個UNIQUE唯一索引:

CREATE TABLE dept2 (

     dept_id INT,

     dept_name VARCHAR(30) ,

     comment VARCHAR(50),

     UNIQUE INDEX  (dept_name)

);

相比普通索引來說 , 比上面的索引選項多了一個unique選項

創建一個全文索引;

CREATE TABLE dept3 (

     dept_id INT,

     dept_name VARCHAR(30) ,

     comment VARCHAR(50),

     log text,

FULLTEXT INDEX  (log)

)engine=myisam;

注: 只有MYISAM存儲引擎支持全文索引,innodb存儲引擎不支持全文索引

創建多列索引

CREATE TABLE dept13 (

     dept_id INT,

     dept_name VARCHAR(30) ,

     comment VARCHAR(50),

INDEX  (dept_name, comment)

);

相比普通索引來說 , 就是將多個字段設置為索引

對已存在的表創建索引

語法一:

CREATE  [UNIQUE | FULLTEXT | SPATIAL ]  INDEX  索引名  ON 表名 (字段名[(長度)]  [ASC |DESC]) ;

創建普通索引示例:此方法要指定索引名稱

CREATE INDEX index_dept_name ON dept6  (dept_name);

創建唯一索引示例:

CREATE UNIQUE INDEX index_dept_name ON dept6 (dept_name);

創建全文索引示例:

CREATE FULLTEXT INDEX index_dept_name ON dept6 (dept_name);

創建多列索引示例:

CREATE INDEX index_dept_name_ comment ON dept6 (dept_name, comment);

語法二:

ALTER TABLE在已存在的表上創建索引:

ALTER  TABLE  表名  ADD  [UNIQUE | FULLTEXT | SPATIAL ] INDEX

     索引名 (字段名[(長度)]  [ASC |DESC]) ;

管理索引:

查看索引: show  create  table  表名/G

測試索引: explain  select  *  from  表名  where  字段名='xx';

刪除索引: drop  index  索引名  on  表名

索引檢測實例:

要求 : 創建一個school的數據庫 , 創建一張t2表 , 用存儲過程腳本t2表插入1000W條數據 , 然后查詢t2數據看看花費了多長時間 ; 再為t2創建一個索引 , 再次查看數據看看所花費的時間

準備:

           create  database  school                                          #創建school數據庫

           create table school.t2(id int,name varchar(30));    #創建一張t2表 , 里面記錄id號和名字

定義一個插入1000W條數據的存儲過程 , 并調用此存儲過程

mysql> delimiter $$                            //設置命令的界定符(也稱為結束符)

mysql> create procedure autoinsert1()          //創建autoinsert1這個存儲過程(類似于shell腳本)

    -> BEGIN

    -> declare i int default 1;

    -> while(i<100000)do

    -> insert into school.t2 values(i,'ccc');

    -> set i=i+1;

    -> end while;

    -> END$$

mysql> delimiter ;

       call  atuoinsert1();

分兩次查詢數據 , 對比所花的時間(實驗中途插入1000W條數據花了33分鐘 , 插100W估計就能看出效果了):

 從上述實驗可以看到 , 在一個存放1000W的表中 , 查詢一條數據跟創建索引后查詢一條數據相差了4S的時間 , 隨著數據更大 , 查詢時間也會不斷增大 , 所以足以證明 , 創建索引會大大提高MySQL的查詢工作效率!!!

二. MySQL存儲引擎介紹

了就是如何存儲數據、如何為存儲的數據建立索引和如何更新、查詢數據等技術的實現方法。因為在關系數據庫中數據的存儲是以表的形式存儲的,所以存儲引擎也可以稱為表類型(即存儲和操作此表的類型)

在Oracle 和SQL Server等數據庫中只有一種存儲引擎,所有數據存儲管理機制都是一樣的。而MySql數據庫提供了多種存儲引擎。用戶可以根據不同的需求為數據表選擇不同的存儲引擎,用戶也可以根據自己的需要編寫自己的存儲引擎。

1. 查看存儲引擎

SHOW ENGINES;

SHOW ENGINES/G               查看MYSQL支持的存儲引擎

SHOW VARIABLES LIKE 'storage_engine%';    查看當前的存儲引擎

SHOW VARIABLES LIKE 'auto_inc%';       查看自增長的設置狀態

show global variables   like  '%connet%'   查看connet環境變量設置

mysql> show variables/G          查看所有的環境變量

show variables當前的會話

show global variables/G全局

2. 選擇存儲引擎

方法1.

mysql> create table innodb1(

-> id int

-> )engine=innodb;

mysql> show create table innodb1;

create tables test100(id init)engine=inodb;

方法2.

/etc/my.cnf

[mysqld]     在此行下添加下面的一行內容

default-storage-engine=INNODB

由于該存儲引擎不支持事務、也不支持外鍵,所以訪問速度較快。因此當對事務完整性沒有要求并以訪問為主的應用適合使用該存儲引擎。

由于該存儲引擎在事務上具有優勢,即支持具有提交、回滾及崩潰恢復能力等事務特性,所以比MyISAM存儲引擎占用更多的磁盤空間。

因此當需要頻繁的更新、刪除操作,同時還對事務的完整性要求較高,需要實現并發控制,建議選擇。

MEMORY

MEMORY存儲引擎存儲數據的位置是內存,因此訪問速度最快,但是安全上沒有保障。適合于需要快速的訪問或臨時表。

BLACKHOLE

黑洞存儲引擎,可以應用于主備復制中的分發主庫。

使用BLACKHOLE存儲引擎的表不存儲任何數據,但如果mysql啟用了二進制日志,SQL語句被寫入日志(并被復制到從服務器)。這樣使用BLACKHOLE存儲引擎的mysqld可以作為主從復制中的中繼重復器或在其上面添加過濾器機制。

本文最后更新于 2023-3-16 15:37,某些文章具有時效性,若有錯誤或已失效,請在網站留言或聯系站長:17tui@17tui.com
·END·
站長網微信號:w17tui,關注站長、創業、關注互聯網人 - 互聯網創業者營銷服務中心

免責聲明:本站部分文章和圖片均來自用戶投稿和網絡收集,旨在傳播知識,文章和圖片版權歸原作者及原出處所有,僅供學習與參考,請勿用于商業用途,如果損害了您的權利,請聯系我們及時修正或刪除。謝謝!

17站長網微信二維碼

始終以前瞻性的眼光聚焦站長、創業、互聯網等領域,為您提供最新最全的互聯網資訊,幫助站長轉型升級,為互聯網創業者提供更加優質的創業信息和品牌營銷服務,與站長一起進步!讓互聯網創業者不再孤獨!

掃一掃,關注站長網微信

大家都在看

    熱門排行

      最近更新

        返回頂部
        主站蜘蛛池模板: 免费 高清 中文在线观看 | 精品夜夜澡人妻无码AV蜜桃 | 我们日本在线观看免费动漫下载 | 国产精品欧美久久久久天天影视 | 色色噜一噜 | 黑色丝袜在线观看 | 台湾佬休闲中性娱乐网 | 午夜黄视频 | 日本人添下面的全过程 | 国产成人刺激视频在线观看 | 被黑人掹躁10次高潮 | 色情www日本欧美 | 一区二一二 | 青青草久久伊人 | 在线中文字幕 | 麻豆精品无码久久久久久久久 | 久久综合给会久久狠狠狠 | 国产亚洲精品A久久777777 | 一本到高清视频在线观看三区 | 欧美性最猛xxxx在线观看视频 | 亚洲欧美中文字幕先锋 | 亚洲精品无码成人AAA片 | 日本午夜精品一区二区三区电影 | 超碰97视频在线观看 | 午夜福利电影 | 国产亚洲精品精华液 | 欧洲最大无人区免费高清完整版 | 高清午夜福利电影在线 | 俺也去最新地址 | 樱花之恋动漫免费观看 | 九九在线免费视频 | 24小时日本高清免费看 | 国产成人免费高清在线观看 | 国产嫩草影院精品免费网址 | 国产AV综合手机在线观看 | 老师你下面好紧夹死了 | 少妇被阴内射XXXB少妇BB | 美女脱了内裤张开腿让男人爽 | 亚洲 欧洲 国产 日产 综合 | 人妻中文字幕乱人伦在线 | 狠狠插综合|