电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

MySql 存儲引擎和索引相關知識總結

瀏覽:126日期:2023-10-14 14:06:32

存儲引擎

什么是數據庫存儲引擎?

數據庫引擎是數據庫底層軟件組件,不同的存儲引擎提供不同的存儲機制,索引技巧,鎖定水平等功能,使用不同的數據庫引擎,可以獲得特定的功能

如何查看引擎?

--如何查看數據庫支持的引擎show engines;​--查看當前數據的引擎:show create table 表名G​--查看當前庫所有表的引擎:show table statusG

建表時指定引擎

create table yingqin (id int,name varchar(20)) engine=’InnoDB’;

修改表的引擎

alter table 表名 engine=’引擎名稱’;

修改默認引擎

vi /etc/my.cnf (配置文件地址根據安裝情況) [mysqld]下面 default-storage-engine=MyIsAM 記得保存后重啟服務

MyISAM 與 InnoDB 的區別

MyISAM:支持全文索引(full text);不支持事務;表級鎖;保存表的具體行數;奔潰恢復不好。

Innodb:支持事務;以前的版本是不支持全文索引,但在5.6之后的版本就開始支持這個功能了;行級鎖(并非絕對,當執行sql語句時不能確定范圍時,也會進行鎖全表,例如: update table set id=3 where name like ’a%’;);不保存表的具體行數;奔潰恢復好。

什么時候選擇什么引擎比較好

MyISAM:

不需要用到事務的時候 做很多 count 計算

InnoDB:

可靠性要求高的,或者要求支持事務 想要用到外鍵約束的時候(MyISAM建立的外鍵是無效的)​

推薦用 InnoDB

索引

什么是索引?

索引是一個單獨的,存儲在磁盤中上的數據庫結構,它們包含著對數據表里的所有記錄的引用指針。使用索引可以快速的找出在某列或多列中有特定值的行。

索引的優點:

通過創建唯一索引,來保證數據庫表中的每一行數據的唯一性。 可以加快數據的檢索速度。 可以保證表數據的完整性與準確性

索引的缺點:

索引需要占用物理空間。 對表中的數據進行改動時,索引也需要跟著動態維護,降低了數據的維護速度。

索引的常見類型:

index:普通索引 unique:唯一索引 primary key:主鍵索引 foreign key:外鍵索引 fulltext: 全文索引 組合索引

普通索引與唯一索引

什么是普通索引?

普通索引(index)顧名思義就是各類索引中最為普通的索引,主要任務就是提高查詢速度。其特點是允許出現相同的索引內容,允許空(null)值

什么是唯一索引?

唯一索引:(unique)顧名思義就是不可以出現相同的索引內容,但是可以為空(null)值

如何創建普通索引或者唯一索引?

--創建表的時候創建create table test ( id int(7) zerofill auto_increment not null, username varchar(20), servnumber varchar(30), password varchar(20), createtime datetime, unique (id))DEFAULT CHARSET=utf8;--直接為表添加索引--語法:alter table 表名 add index 索引名稱 (字段名稱);--注意:假如沒有指定索引名稱時,會以默認的字段名為索引名稱alter table test add unique unique_username (username);​--直接創建索引--語法:create index 索引 on 表名 (字段名);create index index_createtime on test (createtime);

查看索引

--語法:show index from 表名Gshow index from testG

如何刪除索引

--語法:drop index 索引名稱 on 表名;drop index unique_username on test;--語法:alter table 表名 drop index 索引名;alter table test drop index createtime;

主鍵索引

什么是主鍵索引?

把主鍵添加索引就是主鍵索引,它是一種特殊的唯一索引,不允許有空值,而唯一索引(unique是允許為空值的)。指定為“PRIMARY KEY”

主鍵:主鍵是表的某一列,這一列的值是用來標志表中的每一行數據的。注意:每一張表只能擁有一個主鍵

創建主鍵:

--1)創建表的時候創建--2)直接為表添加主鍵索引--語法:alter table 表名 add primary key (字段名);alter table test add primary key (id);

刪除主鍵:

--語法:alter table 表名 drop primary key;alter table test drop primary key;

注意:在有自增的情況下,必須先刪除自增,才可以刪除主鍵

​--刪除自增:alter table test change id id int(7) unsigned zerofill not null;

全文索引

什么是全文索引?

全文索引是將存儲在數據庫中的文章或者句子等任意內容信息查找出來的索引,單位是詞。全文索引也是目前搜索引擎使用的一種關鍵技術。指定為 fulltext

--創建練習表的sql:create table command ( id int(5) unsigned primary key auto_increment, name varchar(10), instruction varchar(60))engine=MyISAM;--插入數據sql:insert into command values(’1’,’ls’,’list directory contents’);insert into command values(’2’,’wc’,’print newline, word, and byte counts for each file’);insert into command values(’3’,’cut’,’remove sections from each line of files’);insert into command values(’4’,’sort’,’sort lines of text files’);insert into command values(’5’,’find’,’search for files in a directory hierarchy’);insert into command values(’6’,’cp’,’復制文件或者文件夾’);insert into command values(’7’,’top’,’display Linux processes’);insert into command values(’8’,’mv’,’修改文件名,移動’);insert into command values(’9’,’停止詞’,’is,not,me,yes,no ...’);

添加全文索引:

--1)創建表的時候創建全文索引--2)通過alter添加alter table command add fulltext(instruction);

使用全文索引:

--語法:select * from 表名 where match (字段名) against (’檢索內容’);select * from command where match(instruction) against (’sections’);

查看匹配度:

select * from command where match(instruction) against (’directory’);

停止詞:

出現頻率很高的詞,將會使全文索引失效。

in boolean mode 模式:

in boolean mode:意思是指定全文檢索模式為布爾全文檢索(簡單可以理解為是檢索方式)

--語法:select * from 表名 where match (字段名) against (’檢索內容’ in boolean mode);select * from command where match(instruction) against (’direct*’ in boolean mode);

注意點:使用通配符*時,只能放在詞的后邊,不能放前邊。

刪除全文索引:

alter table command drop index instruction;

注意點總結:

一般情況下創建全文索引的字段數據類型為 char、varchar、text 。其它字段類型不可以 全文索引不針對非常頻繁的詞做索引。比如 is,no,not,you,me,yes 這些,我們稱之為停止詞 對英文檢索時忽略大小寫

外鍵約束

什么是外鍵?

外鍵就是作用于兩個表數據之間的鏈接的一列或多列,用來保證表與表之間的數據的完整性和準確性。

添加外鍵約束:

--語法:foreign key (字段名) references 關聯的表名(關聯表的字段名)--​注意:主鍵跟外鍵的字段類型一定要相同--create table 的方法:CREATE TABLE `employee` ( `empno` int(11) NOT NULL COMMENT ’雇員編號’, `ename` varchar(50) DEFAULT NULL COMMENT ’雇員姓名’, `job` varchar(30) DEFAULT NULL, `mgr` int(11) DEFAULT NULL COMMENT ’雇員上級編號’, `hiredate` date DEFAULT NULL COMMENT ’雇傭日期’, `sal` decimal(7,2) DEFAULT NULL COMMENT ’薪資’, `deptnu` int(11) DEFAULT NULL COMMENT ’部門編號’, PRIMARY KEY (`empno`), foreign key (deptnu) references dept(deptnu)) ENGINE=InnoDB DEFAULT CHARSET=utf8;--alter table的方法:alter table employee add foreign key (deptnu) references dept(deptnu);

刪除外鍵約束:

注意:在干掉外鍵索引之前必須先把外鍵約束刪除,才能刪除索引

mysql> alter table employee drop index deptnu;ERROR 1553 (HY000): Cannot drop index ’deptnu’: needed in a foreign key constraintmysql> mysql> alter table employee drop foreign key employee_ibfk_1;Query OK, 0 rows affected (0.01 sec)Records: 0 Duplicates: 0 Warnings: 0mysql> mysql> alter table employee drop index deptnu;Query OK, 0 rows affected (0.01 sec)Records: 0 Duplicates: 0 Warnings: 0

注意點總結:

倆個表,主鍵跟外鍵的字段類型一定要相同 要使用外鍵約束表的引擎一定得是 InnoDB 引擎,MyISAM 是不起作用的 在干掉外鍵索引之前必須先把外鍵約束刪除,才能刪除索引

聯合索引

什么是聯合索引?

聯合索引又稱組合索引或者復合索引,是建立在倆列或者多列以上的索引。

創建聯合索引

--語法:alter table 表名 add index(字段1,字段2,字段3);alter table test add index(username,servnumber,password);

刪除聯合索引

--語法:alter table test drop index 索引名;alter table test drop index username;

為什么要使用聯合索引,而不使用多個單列索引?

聯合索引的效率遠遠高于單列索引。假如創建了三個單列索引,并且查詢條件中也存在這三列,但是 MySQL 只會選擇最優的列索引,而不會三個索引都用上

聯合索引的最左原則

以上面的索引為例,查詢條件中必須有 username,才會去使用這個索引,否則不會去使用該索引

注意點總結:

索引并非越多越好,過多的索引會增加數據的維護速度還有磁盤空間的浪費。 當表的數據量很大的時候,可以考慮建立索引。 表中經常查數據的字段,可以考慮建立索引。 想要保證表中數據的唯一性,可以考慮建立唯一索引。 想要保證倆張表中的數據的完整性跟準確性,可以考慮建立外鍵約束。 經常對多列數據進行查詢時,可以考慮建立聯合索引。

以上就是MySql 存儲引擎和索引相關知識總結的詳細內容,更多關于MySql 存儲引擎和索引的資料請關注好吧啦網其它相關文章!

標簽: MySQL 數據庫
相關文章:
主站蜘蛛池模板: 今日热点_实时热点_奇闻异事_趣闻趣事_灵异事件 - 奇闻事件 | 臻知网大型互动问答社区-你的问题将在这里得到解答!-无锡据风网络科技有限公司 | 消防设施操作员考试报名时间,报名入口,报考条件 | 定硫仪,量热仪,工业分析仪,马弗炉,煤炭化验设备厂家,煤质化验仪器,焦炭化验设备鹤壁大德煤质工业分析仪,氟氯测定仪 | 千斤顶,液压千斤顶-力良企业,专业的液压千斤顶制造商,shliliang.com | 上海刑事律师|刑事辩护律师|专业刑事犯罪辩护律师免费咨询-[尤辰荣]金牌上海刑事律师团队 | 热回收盐水机组-反应釜冷水机组-高低温冷水机组-北京蓝海神骏科技有限公司 | 箱式破碎机_移动方箱式破碎机/价格/厂家_【华盛铭重工】 | PO膜_灌浆膜及地膜供应厂家 - 青州市鲁谊塑料厂 | 一点车讯-汽车网站,每天一点最新车讯!| 智能交通网_智能交通系统_ITS_交通监控_卫星导航_智能交通行业 | 伟秀电气有限公司-10kv高低压开关柜-高低压配电柜-中置柜-充气柜-欧式箱变-高压真空断路器厂家 | 台湾阳明固态继电器-奥托尼克斯光电传感器-接近开关-温控器-光纤传感器-编码器一级代理商江苏用之宜电气 | 气弹簧定制-气动杆-可控气弹簧-不锈钢阻尼器-工业气弹簧-可调节气弹簧厂家-常州巨腾气弹簧供应商 | 电子厂招聘_工厂招聘_普工招聘_小时工招聘信息平台-众立方招工网 | 西安微信朋友圈广告投放_微信朋友圈推广_西安度娘网络科技有限公司 | 400电话_400电话申请_888元包年_400电话办理服务中心_400VIP网 | 锂离子电池厂家-山东中信迪生电源| 真空冷冻干燥机_国产冻干机_冷冻干燥机_北京四环冻干 | 考试试题_试卷及答案_诗词单词成语 - 优易学 | 粘度计,数显粘度计,指针旋转粘度计 | 泉州陶瓷pc砖_园林景观砖厂家_石英砖地铺石价格 _福建暴风石英砖 | 注塑模具_塑料模具_塑胶模具_范仕达【官网】_东莞模具设计与制造加工厂家 | 焊管生产线_焊管机组_轧辊模具_焊管设备_焊管设备厂家_石家庄翔昱机械 | bng防爆挠性连接管-定做金属防爆挠性管-依客思防爆科技 | 爱佩恒温恒湿测试箱|高低温实验箱|高低温冲击试验箱|冷热冲击试验箱-您身边的模拟环境试验设备技术专家-合作热线:400-6727-800-广东爱佩试验设备有限公司 | 粘度计维修,在线粘度计,二手博勒飞粘度计维修|收购-天津市祥睿科技有限公司 | 锂辉石检测仪器,水泥成分快速分析仪-湘潭宇科分析仪器有限公司 | pbootcms网站模板|织梦模板|网站源码|jquery建站特效-html5模板网 | 撕碎机,撕破机,双轴破碎机-大件垃圾破碎机厂家 | 防火门|抗爆门|超大门|医疗门|隔声门-上海加汇门业生产厂家 | 在线钠离子分析仪-硅酸根离子浓度测定仪-油液水分测定仪价格-北京时代新维测控设备有限公司 | PAS糖原染色-CBA流式多因子-明胶酶谱MMP-上海研谨生物科技有限公司 | 并离网逆变器_高频UPS电源定制_户用储能光伏逆变器厂家-深圳市索克新能源 | 比亚迪叉车-比亚迪电动叉车堆垛车托盘车仓储叉车价格多少钱报价 磁力去毛刺机_去毛刺磁力抛光机_磁力光饰机_磁力滚抛机_精密金属零件去毛刺机厂家-冠古科技 | ALC墙板_ALC轻质隔墙板_隔音防火墙板_轻质隔墙材料-湖北博悦佳 | 液晶拼接屏厂家_拼接屏品牌_拼接屏价格_监控大屏—北京维康 | 有机肥设备生产制造厂家,BB掺混肥搅拌机、复合肥设备生产线,有机肥料全部加工设备多少钱,对辊挤压造粒机,有机肥造粒设备 -- 郑州程翔重工机械有限公司 | 精密冲床,高速冲床等冲压设备生产商-常州晋志德压力机厂 | 黑龙江京科脑康医院-哈尔滨精神病医院哪家好_哈尔滨精神科医院排名_黑龙江精神心理病专科医院 | 手板_手板模型制作_cnc手板加工厂-东莞天泓 |