亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

mysql 添加索引的實現(xiàn)步驟

 更新時間:2024年07月22日 10:13:11   作者:潞哥的博客  
索引是一種用于提高查詢效率的數(shù)據(jù)結(jié)構(gòu),通過添加索引,可以加快數(shù)據(jù)的查找速度,本文主要介紹了mysql 添加索引的實現(xiàn)步驟,具有一定的參考價值,感興趣的可以了解一下

一、數(shù)據(jù)庫索引

1、索引(index)的概念

(1)是一個排序的數(shù)據(jù)結(jié)構(gòu),幫助mysql快速查詢、更新數(shù)據(jù)庫表中的數(shù)據(jù)
(2)無須對整個表進行掃描,通過物理地址就可以找到所需數(shù)據(jù)
(3)為了提高表的搜索效率而對某些字段的值建立的數(shù)據(jù)結(jié)構(gòu);并不是所有字段都需要創(chuàng)建索引

2、索引的作用

(1)優(yōu)點
①當(dāng)數(shù)據(jù)量很大或查詢涉及多個表時,使用索引,可以大大地提高數(shù)據(jù)查詢速度,降低數(shù)據(jù)庫的IO成本;
②通過索引對數(shù)據(jù)進行排序,可以降低數(shù)據(jù)庫的排序成本,降低CPU的消耗;
③通過創(chuàng)建唯一性索引保證數(shù)據(jù)表數(shù)據(jù)的唯一性;
④可以加快表與表之間的連接
(2)缺點
①增加了數(shù)據(jù)庫的存儲空間
②降低了表的更新速度,插入和修改數(shù)據(jù)時花費更多的時間

3、索引的分類

(1)從物理存儲的角度來劃分:
①聚簇索引:索引順序按照數(shù)據(jù)的物理位置,檢索多行數(shù)據(jù)速度更快
②非聚簇索引:索引順序不是按照數(shù)據(jù)的物理位置,檢索單行數(shù)據(jù)的速度更快
(2)從邏輯的角度來劃分
普通索引、唯一索引、主鍵索引、組合索引和全文索引

4、索引的添加與使用

(1)添加索引:通過某一個字段或某些字段添加
(2)索引使用:索引創(chuàng)建完成后無需調(diào)用,當(dāng)數(shù)據(jù)庫進行數(shù)據(jù)查詢的時候,會自動使用索引

二、索引的分類

1、普通索引(可以有多個,對應(yīng)MUL)

(1)最基本的索引類型,不要求索引列的值唯一性
(2)創(chuàng)建普通索引的方式

直接創(chuàng)建
create index 索引名稱 on 表名(字段名稱(字段長度));  #字段長度可添加
修改表的方式創(chuàng)建
alter table 表名 add index 索引名稱 (字段名稱(字段長度));
創(chuàng)建表時創(chuàng)建
create table 表名(字段1,字段2,字段3,primary key(字段名稱),index 索引名稱(字段名稱(字段長度));

示例

[root@localhost ~]# mysql -uroot -p  #登錄mysql
mysql> create database auth;  #創(chuàng)建auth庫
mysql> use auth;  #進入auth庫
mysql> create table auth.users(id int(10) not null,  創(chuàng)建users表,建立id字段,數(shù)據(jù)類型int,不為空
    -> name char(20) not null,  
    -> age varchar(10) default '',
    -> primary key(id));
mysql> desc users;  #查看表結(jié)構(gòu),存在3個字段
mysql> insert into users values('1','zhangsan','20');  
mysql> insert into users values('2','lisi','23');
mysql> insert into users values('3','wangwu','26');  #字段下分別添加內(nèi)容
mysql> select * from users;  #查看表中數(shù)據(jù)
直接創(chuàng)建方法
mysql> create index index_age on auth.users(age);  #在age上創(chuàng)建索引在users表的age字段,index_age:索引名稱
修改表的方式創(chuàng)建
mysql> alter table users add index index_name(name);  #在users表里的name字段創(chuàng)建索引,索引名稱為index_name
mysql> desc users;
+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id    | int(10)     | NO   | PRI | NULL    |       |  #主鍵索引對應(yīng)PRL
| name  | char(20)    | NO   | MUL | NULL    |       |  #普通索引對應(yīng)MUL
| age   | varchar(10) | YES  | MUL |         |       |
+-------+-------------+------+-----+---------+-------+
mysql> show index from users; 
或者mysql> show keys from users; #查看users表的索引
+-------+------------+------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| Table | Non_unique | Key_name   | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment |
+-表名--+索引值得唯一性+--索引名稱--+-索引列的序列號-+-對應(yīng)的字段 --+-----------+-------------+----------+--------+------+--索引的類型-+---------+---------------+
| users |  唯一    0 | PRIMARY    |            1 | id          | A         |           2 |     NULL | NULL   |      | BTREE      |         |               |
| users |不是唯一  1 | index_age  |            1 | age         | A         |           3 |     NULL | NULL   | YES  | BTREE      |         |               |
| users |          1 | index_name |            1 | name        | A         |           3 |     NULL | NULL   |      | BTREE      |         |               |
+-------+------------+------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+

2、唯一索引(可以有多個,對應(yīng)UNIQUE)

(1)與普通索引的區(qū)別是索引列的所有值必須唯一,但可以有空值;
(2)創(chuàng)建唯一索引的方式
create unique index 索引名稱 on 表名(字段名稱(字段長度)); #unique:默認字段
alter table 表名 add unique 索引名稱 (字段名稱(字段長度));
示例

mysql> create table auth.kc31(id int(10) not null,  #創(chuàng)建kc31表,存在3個字段
    -> name char(20) not null,
    -> address varchar(30) default '',
    -> unique index index_address(address));  #unique:唯一性索引
mysql> use auth;
mysql> desc kc31;  #查看kc31表結(jié)構(gòu)
| address | varchar(30) | YES  | UNI |         |       |  #address的UNI:唯一性索引
mysql> show keys from kc31;  #查看Non_unique為0:代表唯一索引
mysql> insert into kc31 values('1','aaa','zhoukou');  #插入數(shù)據(jù)
mysql> insert into kc31 values('2','bbb','zhoukou');  #驗證address字段的唯一性
ERROR 1062 (23000): Duplicate entry 'zhoukou' for key 'index_address'  #address字段zhoukou的關(guān)鍵字具有唯一性,所以不能創(chuàng)建
mysql> insert into kc31 values('2','bbb','luoyang');  #將zhoukou改為luoyang可以創(chuàng)建成功
mysql> insert into kc31 values('3','bbb','luohe');  #name字段不具有唯一性,可以創(chuàng)建
mysql> select * from kc31;  
+----+------+---------+
| id | name | address |
+----+------+---------+
|  1 | aaa  | zhoukou |
|  2 | bbb  | luoyang |
|  3 | bbb  | luohe   |
+----+------+---------+  #第二字段可以有重復(fù),第三字段因為有唯一性不能重復(fù)

3、主鍵索引(只能有一個,關(guān)鍵字PRIMARY)

(1)是一種也輸?shù)奈ㄒ凰饕?,指定?ldquo;PRIMARY KEY”
(2)一個表只能有一個主鍵,不允許有空值
(3)創(chuàng)建主鍵索引的方式
修改表的創(chuàng)建
alter table 表名 add primary key(字段名稱(字段長度));
直接指定主鍵
create table 表名(字段1,字段2,primary key(指定字段名稱));
示例

mysql> create table auth.test(id int(10) not null,  #創(chuàng)建test表
    -> class char(20) not null,
    -> primary key(id));  #直接指定主鍵為id字段
mysql> desc test;
| id    | int(10)  | NO   | PRI | NULL    |       |  #PRI主鍵索引
mysql> show index from test\G;
*************************** 1. row ***************************
        Table: test  #表名
   Non_unique: 0  #索引唯一值
     Key_name: PRIMARY  #索引名稱,關(guān)鍵字;PRIMARY
  Column_name: id  #id作為主鍵
mysql> alter table test drop primary key;  #清空主鍵索引
mysql> show index from test  #主鍵索引為空值
mysql> alter table test add primary key(class);  #將test表的class添加為主鍵
mysql> show index from test  #再查詢表結(jié)構(gòu),存在class主鍵

4、主鍵索引和唯一索引的區(qū)別

(1)主鍵索引一定是唯一性索引,但唯一性索引不一定是主鍵索引
(2)一張表可以有多個唯一性索引,但只允許有提個主鍵索引
(3)主鍵列不能為空,但唯一索引可以為空
(4)主鍵索引是一種特殊的唯一性索引

mysql> alter table test add primary key(id);  #驗證主鍵的唯一性
ERROR 1068 (42000): Multiple primary key defined  #多余的主鍵沒有被定義,不能同時存在2個主鍵
mysql> alter table test add unique index_id(id);  #創(chuàng)建id字段唯一性索引,可以有多個唯一性索引
mysql> show keys from test\G;  #查看test存在2個唯一性索引
*************************** 1. row ***************************
        Table: test
   Non_unique: 0
     Key_name: PRIMARY  #主鍵索引
  Column_name: class
*************************** 2. row ***************************
        Table: test
   Non_unique: 0
     Key_name: index_id  #唯一索引
  Column_name: id

5、組合索引(單列索引與多列索引)

(1)當(dāng)多條件查詢的時候我們可以使用組合索引,查詢效率會更高,因為當(dāng)有多個單列索引時,MySQL只能用到其中那個它認為最有效率的單列索引
(2)支持最左原則,從左往右依次執(zhí)行
(3)創(chuàng)建組合索引的方式
create table 表名(字段1,字段2,字段3,index 索引名稱(字段1名稱 字段2名稱 字段3名稱));
示例

mysql> create table auth.kgc(name char(10) not null,  #創(chuàng)建kgc表
    -> passwd char(50) not null,
    -> sex int(10) not null,
    -> index index_kgc(name,passwd,sex));  #在name,passwd,sex創(chuàng)建組合索引
mysql> show index from kgc\G;  #查看存在3個索引

6、全文索引

(1)索引類型為FULLTEXT
(2)可以在char、varchar或者test類型的列上創(chuàng)建
create fulltext index 索引名稱 on 表名(字段名稱(字段長度));
alter table 表名 add fulltext index 索引名稱(字段名稱(字段長度));
create table 表名(字段1,字段2,字段3,fulltext index 索引名稱(字段名稱(字段長度));
示例

mysql> create table auth.content(id int(10) not null,
    -> title char(255) not null,
    -> time int(10) null,
    -> primary key(id),
    -> fulltext index_id(id));
ERROR 1283 (HY000): Column 'id' cannot be part of FULLTEXT index  #id字段不是3種數(shù)據(jù)類型,不能在設(shè)置全文索引
mysql> create table auth.content(id int(10) not null, title char(255) not null, time int(10) null, primary key(id), fulltext index_id(title));  #替換為支持的數(shù)據(jù)類型即可
mysql> show index from content\G;
*************************** 2. row ***************************
   Index_type: FULLTEXT  #數(shù)據(jù)類型為全文索引

7、創(chuàng)建索引的依據(jù)

(1)表的主鍵、外鍵都必須有索引
(2)記錄數(shù)超過300行的表應(yīng)該有索引
(3)經(jīng)常與其他表進行連接的表,在連接字段上應(yīng)該建立索引
(4)唯一性太差的字段不適合創(chuàng)建索引
(5)更新太頻繁的字段不適合創(chuàng)建索引
(6)將常出現(xiàn)再where子句中的字段,特別是大表的字段,應(yīng)該建立索引
(7)索引應(yīng)該建立在選擇性高的字段上
(8)索引應(yīng)該建在小字段上,對于大的文本字段甚至超長字段,不要建索引

8、查看索引的方法

show index from 表名;
show keys from 表名;

9、刪除索引的方法

drop index 索引名稱 on 表名; #刪除普通索引
alter table 表名 drop index 索引名稱; #刪除普通索引
alter table 表名 drop primary key; #刪除主鍵索引

示例

mysql> drop index index_id on content;  #刪除content表下的index_id索引
mysql> alter table content drop primary key;  #刪除ontent表下的主鍵索引
mysql> show index from content;  
Empty set (0.00 sec)  #索引已刪除

三、MySQL事務(wù)

1、事務(wù)的概念

(1)是一種機制、一個操作的組合,包含了一組數(shù)據(jù)庫操作命令,并且把所有的命令作為一個整體一起向系統(tǒng)提交或撤銷操作請求,即這一組數(shù)據(jù)庫操作命令要么都執(zhí)行,要么都不執(zhí)行
(2)是一個不可分割的工作邏輯單元,在數(shù)據(jù)庫系統(tǒng)上執(zhí)行并發(fā)操作時,事務(wù)是最小的控制單元
(3)適用于多用戶同時操作數(shù)據(jù)庫系統(tǒng)的場景,如銀行、保險公司及證券交易系統(tǒng)等待
(4)通過事務(wù)的整體性以保證數(shù)據(jù)的一致性

2、事務(wù)的ACID特點

(1)原子性(Atomicity)
①事務(wù)是一個完整的操作,事務(wù)的各元素是不可分割的
②事務(wù)中的所有元素必須作為一個整體提交或回滾
③如果事務(wù)中的任何元素失敗,則整個事務(wù)將失敗
(2)一致性(Consistency)
①當(dāng)事務(wù)完成時,數(shù)據(jù)必須處于一致狀態(tài)
②當(dāng)事務(wù)開始前,數(shù)據(jù)庫中存儲的數(shù)據(jù)處于一致狀態(tài)
③在正在執(zhí)行的事務(wù)中,數(shù)據(jù)可能處于不一致的狀態(tài)
④當(dāng)事務(wù)成功完成時,數(shù)據(jù)必須再次回到已知的一致狀態(tài)
(3)隔離性(Isolation)
①對數(shù)據(jù)進行修改的所有并發(fā)事務(wù)是彼此隔離的,表名事務(wù)必須是獨立的,它不應(yīng)以任何方式依賴于或影響其他事務(wù)
②修改數(shù)據(jù)的事務(wù)可在另一個使用相同數(shù)據(jù)的事務(wù)開始之前訪問這些數(shù)據(jù),或者在另一個使用相同數(shù)據(jù)的事務(wù)結(jié)束之后訪問這些數(shù)據(jù)
(4)持久性(Durability)
①值不管系統(tǒng)是否發(fā)生故障,事務(wù)處理的結(jié)果都是永久的
②一旦事務(wù)被提交,事務(wù)的效果會被永久地保留在數(shù)據(jù)庫中

3、事務(wù)控制語句

(1)MySQL事務(wù)默認是自動提交,當(dāng)SQL語句提交時事務(wù)遍自動提交
(2)事務(wù)控制語句
①begin:開啟一個事務(wù)
②rollback:回滾一個事務(wù),回滾到 begen之前地狀態(tài)
③commit:提交一個事務(wù)
④savepoint identifier:在事務(wù)中創(chuàng)建一個保存點,一個事務(wù)可以有多個savepoint
⑤release savepoint identifier:刪除一個事務(wù)的保存點(與保存的數(shù)據(jù)無影響)
⑥r(nóng)ollback to identifier:回滾到一個事務(wù)的保存點
⑦set transaction:用來設(shè)置事務(wù)的隔離級別

4、手動對事務(wù)進行控制的方法

(1)事務(wù)處理命令控制事務(wù)
①begin:開始一個事務(wù)
②commit:提交一個事務(wù)
③rollback:回滾一個事務(wù)(位于begin和commit之間)
(2)使用set命令進行控制
①set autocommit=0:禁止自動提交(手動提交事務(wù))
②set autocommit=1:開啟自動提交

5、實驗:手動控制事務(wù)

(1)驗證手動控制事務(wù)不提交則不會保存

[root@localhost ~]# mysql -uroot -p  #啟動數(shù)據(jù)庫
mysql> create database imployee_salary;  #創(chuàng)建imployee_salary數(shù)據(jù)庫
mysql> use imployee_salary;  #進入imployee_salary數(shù)據(jù)庫
mysql> create table IT_salary(員工ID char(10),
    -> 崗位類別 char(20),
    -> 姓名 char(10),
    -> 年齡 char(10),
    -> 學(xué)歷 char(10),
    -> 薪資 char(10),
    -> primary key(員工ID));
mysql> desc it_salary;
+--------------+----------+------+-----+---------+-------+
| Field        | Type     | Null | Key | Default | Extra |
+--------------+----------+------+-----+---------+-------+
| 員工ID       | char(10) | NO   | PRI | NULL    |       |
| 崗位類別     | char(20) | YES  |     | NULL    |       |
| 姓名         | char(10) | YES  |     | NULL    |       |
| 年齡         | char(10) | YES  |     | NULL    |       |
| 學(xué)歷         | char(10) | YES  |     | NULL    |       |
| 薪資         | char(10) | YES  |     | NULL    |       |
+--------------+----------+------+-----+---------+-------+
mysql> begin;  #開啟事務(wù)
mysql> insert into it_salary values('1','硬件工程師','小王','22','???,'8000');
mysql> insert into it_salary values('2','windows工程師','小張','23','本科','9000');
mysql> insert into it_salary values('4','Linux工程師','小楊','25','本科','12000');
mysql> select * from it_salary;
+----------+------------------+--------+--------+--------+--------+
| 員工ID   | 崗位類別          | 姓名   | 年齡    | 學(xué)歷   | 薪資   |
+----------+------------------+--------+--------+--------+--------+
| 1        | 硬件工程師        | 小王   | 22     | ???   | 8000   |
| 2        | windows工程師     | 小張   | 23     | 本科    | 9000   |
| 4        | Linux工程師       | 小楊    | 25    | 本科    | 12000  |
+----------+------------------+--------+--------+--------+--------+
mysql> exit  #退出
[root@localhost ~]# mysql -uroot -p  #重新登錄數(shù)據(jù)庫
mysql> show tables from imployee_salary;  #能夠查到it_salary數(shù)據(jù)表
mysql> select * from it_salary;  #數(shù)據(jù)已經(jīng)不存在
說明:此時數(shù)據(jù)庫中并沒有之前插入的數(shù)據(jù),說明使用begin開啟服務(wù),執(zhí)行數(shù)據(jù)操作語句后,必須使用commit提交事務(wù),否則數(shù)據(jù)是不能自動提交的。
(2)rollback(回滾)的使用
mysql> use imployee_salary;
mysql> begin;  #開啟事務(wù)
mysql> insert into it_salary values('1','硬件工程師','小王','22','專科','8000');
mysql> insert into it_salary values('2','windows工程師','小張','23','本科','9000');
mysql> select * from it_salary;  #存在添加的兩行數(shù)據(jù)
mysql> rollback;  #回滾事務(wù)
mysql> select * from it_salary;  #數(shù)據(jù)已經(jīng)不存在
說明:使用begin開始事務(wù),然后執(zhí)行了插入語句后可以看到插入的數(shù)據(jù),但是執(zhí)行rollback回滾命令后,之前的數(shù)據(jù)已經(jīng)沒有了
(3)savepoint(定義回滾點)的使用
mysql> begin;  #開啟事務(wù)
mysql> insert into it_salary values('1','硬件工程師','小王','22','???,'8000');  #插入一個數(shù)據(jù)
mysql> savepoint s1;  #定義s1回滾點
mysql> insert into it_salary values('2','windows工程師','小張','23','本科','9000');  #插入第二個數(shù)據(jù)
mysql> savepoint s2;  #定義s2回滾點
mysql> select * from it_salary;  #存在插入的2行數(shù)據(jù)

如果后面執(zhí)行rollback命令,這兩條數(shù)據(jù)都將丟失。

mysql> rollback to savepoint s1;  #回滾到s1
mysql> select * from it_salary;  #只存在一條數(shù)據(jù)
+----------+-----------------+--------+--------+--------+--------+
| 員工ID   | 崗位類別        | 姓名   | 年齡   | 學(xué)歷   | 薪資   |
+----------+-----------------+--------+--------+--------+--------+
| 1        | 硬件工程師      | 小王   | 22     | 專科   | 8000   |
+----------+-----------------+--------+--------+--------+--------+
mysql> rollback to savepoint s2;  #嘗試回滾到s2
ERROR 1305 (42000): SAVEPOINT s2 does not exist  #數(shù)據(jù)無法回滾
說明:回滾到s1,第一條插入的數(shù)據(jù)可以查詢出來,但是無法回退到s2了
(4)使用set命令控制事務(wù)
mysql> set autocommit=0;  #改為手動提交事務(wù)
mysql> insert into it_salary values('2','windows工程師','小張','23','本科','9000');
mysql> commit;  #提交事務(wù),數(shù)據(jù)永久保存
說明:若commit提交事務(wù)后,則數(shù)據(jù)無法進行回滾

四、存儲引擎

1、存儲引擎介紹

(1)MySQL中的數(shù)據(jù)用各種不同地技術(shù)存儲在文件中,每一種技術(shù)都使用不同的存儲機制、索引技巧、鎖定水平并最終提供不同的功能和能力,這些不同的技術(shù)以及配套地功能在MySQL中稱為存儲引擎
(2)存儲引擎是MySQL將數(shù)據(jù)存儲在文件系統(tǒng)中的存儲方式或者存儲格式
(3)MySQL常用的存儲方式
①MyISAM;②innoDB
(4)MySQL數(shù)據(jù)庫中的組件,負責(zé)執(zhí)行實際的數(shù)據(jù)I/O操作
(5)MySQL系統(tǒng)中,存儲引擎處于文件系統(tǒng)之上,在數(shù)據(jù)保存到文件系統(tǒng)之前會傳輸?shù)酱鎯σ妫蟀凑崭鱾€存儲引擎的存儲格式進行儲存

2、MyISAM的介紹

(1)MyISAM不支持事務(wù),也不支持外鍵
(2)訪問速度快
(3)對事務(wù)完整性沒有要求
(4)MyISAM在磁盤上存儲成三個文件
①表結(jié)構(gòu)文件(.frm文件)
②數(shù)據(jù)文件的擴展名為.MYD(MYData)
③索引文件的擴展名是.MYI(MYIndex)
(5)表級鎖定形式,數(shù)據(jù)在更新時鎖定整個表
(6)數(shù)據(jù)庫在讀寫過程中相互阻塞
①會在數(shù)據(jù)寫入的過程中阻塞用戶數(shù)據(jù)的讀取
②也會在數(shù)據(jù)讀取的過程中阻塞用戶的數(shù)據(jù)寫入
(7)數(shù)據(jù)單獨寫入或讀取,速度較快且占用資源相對少
(8)MyIAM支持的存儲格式
①靜態(tài)表;②動態(tài)表;③壓縮表

3、MyISAM適用的生產(chǎn)場景

(1)公司業(yè)務(wù)不需要事務(wù)的支持
(2)單方面讀取或?qū)懭霐?shù)據(jù)比較多的業(yè)務(wù)
(3)MyISAM存儲引擎不適合數(shù)據(jù)讀寫都比較頻繁的場景
(4)對數(shù)據(jù)業(yè)務(wù)一致性要求不是非常高的業(yè)務(wù)
(5)服務(wù)器硬件資源相對比較差

4、innoDB特點介紹

(1)支持事務(wù)
(2)行級鎖定,提高數(shù)據(jù)庫并發(fā)訪問性能
(3)非常高效的緩存索引和數(shù)據(jù)
(4)支持外鍵約束,5.5版本后支持全文索引
(5)對硬件資源要求比較高的場合

5、innoDB適用生產(chǎn)場景分析

(1)業(yè)務(wù)需要事務(wù)的支持
(2)行級鎖定對高并發(fā)有很好的適應(yīng)能力,但需確保查詢是通過索引來完成
(3)業(yè)務(wù)數(shù)據(jù)更新較為頻繁的場景,如:論壇,微博等
(4)業(yè)務(wù)數(shù)據(jù)一致性要求較高,如:銀行業(yè)務(wù)
(5)硬件設(shè)備內(nèi)存較大,利用lnnodb較好的緩存能力來提高內(nèi)存利用率,減少磁盤IO的壓力

6、企業(yè)選擇存儲引擎依據(jù)

(1)需要考慮每個存儲引擎提供的核心功能及應(yīng)用場景
(2)支持的字段和數(shù)據(jù)類型
(3)鎖定類型:不同的存儲引擎支持不同級別的鎖定
(4)索引的支持
(5)事務(wù)處理的支持

7、查看存儲引擎

(1)查看MySQL默認的存儲引擎

mysql> show engines;  #默認存在9款存儲引擎
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| Engine             | Support | Comment                                                        | Transactions | XA   | Savepoints |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| InnoDB             | DEFAULT | Supports transactions, row-level locking, and foreign keys     | YES          | YES  | YES        |
| MRG_MYISAM         | YES     | Collection of identical MyISAM tables                          | NO           | NO   | NO         |
| MEMORY             | YES     | Hash based, stored in memory, useful for temporary tables      | NO           | NO   | NO         |
| BLACKHOLE          | YES     | /dev/null storage engine (anything you write to it disappears) | NO           | NO   | NO         |
| MyISAM             | YES     | MyISAM storage engine                                          | NO           | NO   | NO         |
| CSV                | YES     | CSV storage engine                                             | NO           | NO   | NO         |
| ARCHIVE            | YES     | Archive storage engine                                         | NO           | NO   | NO         |
| PERFORMANCE_SCHEMA | YES     | Performance Schema                                             | NO           | NO   | NO         |
| FEDERATED          | NO      | Federated MySQL storage engine                                 | NULL         | NULL | NULL       |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
mysql> show variables like '%storage_engine%';
(2)查看表正在使用的存儲引擎
mysql> show table status where name='表名';
mysql> show create table 表名;

8、修改存儲引擎

(1)alter table 修改 (準對以創(chuàng)建的表)

mysql> alter table user_info engine=引擎;

(2)修改my.cnf文件,指定默認存儲引擎并重新啟動(針對新創(chuàng)建的表,舊表不影響存儲引擎)

[root@localhost ~]# vim /etc/my.cnf
    default-storage-engine=INNODB  
[root@localhost ~]# systemctl restart mysqld

(3)create table創(chuàng)建表時指定存儲引擎

mysql> create table 表名(字段1) engine=引擎;

(4)臨時修改存儲引擎

mysql> set default_storage_engine=引擎;

到此這篇關(guān)于mysql 添加索引的實現(xiàn)步驟的文章就介紹到這了,更多相關(guān)mysql 添加索引內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家! 

相關(guān)文章

  • MySQL查詢學(xué)習(xí)之基礎(chǔ)查詢操作

    MySQL查詢學(xué)習(xí)之基礎(chǔ)查詢操作

    這篇文章主要給大家介紹了關(guān)于MySQL查詢學(xué)習(xí)之基礎(chǔ)查詢操作的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-05-05
  • mysql5.5與mysq 5.6中禁用innodb引擎的方法

    mysql5.5與mysq 5.6中禁用innodb引擎的方法

    這篇文章主要介紹了mysql5.5中禁用innodb引擎的方法,需要的朋友可以參考下
    2014-04-04
  • linux Xtrabackup安裝及使用方法

    linux Xtrabackup安裝及使用方法

    Xtrabackup是一個對InnoDB做數(shù)據(jù)備份的工具,支持在線熱備份(備份時不影響數(shù)據(jù)讀寫),是商業(yè)備份工具InnoDB Hotbackup的一個很好的替代品
    2013-04-04
  • mysql 常見命令和學(xué)習(xí)心得

    mysql 常見命令和學(xué)習(xí)心得

    mysql 常見命令和學(xué)習(xí)心得,學(xué)習(xí)php的朋友需要了解的一些基礎(chǔ),方便日后的開發(fā)。
    2009-09-09
  • JDBC鏈接MySQL8的注意事項及說明

    JDBC鏈接MySQL8的注意事項及說明

    這篇文章主要介紹了JDBC鏈接MySQL8的注意事項及說明,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • MySQL索引類型總結(jié)和使用技巧以及注意事項

    MySQL索引類型總結(jié)和使用技巧以及注意事項

    索引是快速搜索的關(guān)鍵。MySQL索引的建立對于MySQL的高效運行是很重要的。下面介紹幾種常見的MySQL索引類型
    2014-04-04
  • 點贊功能使用MySQL還是Redis

    點贊功能使用MySQL還是Redis

    本文主要介紹了點贊功能使用MySQL還是Redis,這是最近面試時被問到的1道面試題,本篇博客對此問題進行總結(jié)分享,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-12-12
  • mysql不包含模糊查詢問題

    mysql不包含模糊查詢問題

    這篇文章主要介紹了mysql不包含模糊查詢問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • Mysql優(yōu)化方法詳細介紹

    Mysql優(yōu)化方法詳細介紹

    MySQL的優(yōu)化指的是一個很大的系統(tǒng),面試的時候我之前是從sql的語句優(yōu)化方面去說的,這種優(yōu)化也有作用,不過是從邏輯方面去優(yōu)化,下面這篇文章主要給大家介紹了關(guān)于MySQL查詢緩存優(yōu)化的相關(guān)資料,需要的朋友可以參考下
    2023-02-02
  • 數(shù)據(jù)庫查詢哪個對像里面包含什么字段方法語句

    數(shù)據(jù)庫查詢哪個對像里面包含什么字段方法語句

    在本篇文章里小編給大家整理的關(guān)于數(shù)據(jù)庫查詢哪個對像里面包含什么字段方法語句有需要的朋友們可以學(xué)習(xí)下。
    2019-08-08

最新評論