企业制作网站一般多少钱,网站首页制作代码,有没有做花卉种子的网站啊,网络广告设计目录 ♫索引
♪什么是索引
♪索引的数据结构
♪索引的使用 ♫事务
♪什么是事务
♪事务的特性
♪事务的使用 ♫索引 ♪什么是索引 索引是存储在磁盘上的一个数据结构#xff0c;通过索引可以快速地定位到存储在磁盘上的数据。 索引在提高查询速度的同时#xff0c;还提…目录 ♫索引
♪什么是索引
♪索引的数据结构
♪索引的使用 ♫事务
♪什么是事务
♪事务的特性
♪事务的使用 ♫索引 ♪什么是索引 索引是存储在磁盘上的一个数据结构通过索引可以快速地定位到存储在磁盘上的数据。 索引在提高查询速度的同时还提高了增删改增删改的同时还需要额外调整索引和空间的开销构建索引需要额外的磁盘空间。 ♪索引的数据结构 索引的目的是为了加快查询速度在我们已知的数据结构中虽然哈希表查询的时间复杂度O(1)最低但哈希表并不能查询指定范围的数据故并不适合构成MySQL里的索引。而二叉搜索树虽然能查询指定范围但由于是二叉当数据量大时树的高度就会比较高元素之间的比较次数就多读硬盘的次数也就会变多从而速度就会降低故也不是很适合构成MySQL里的索引。那MySQL里的索引底层到底是什么呢其实它的底层是一种名叫B树的数据结构。 B树具有以下特点 ①.B树是一颗N插搜索树每个节点有N个keyN个key划分出N个区间最后一个key为所在区间的最大值 ②.父节点的key会在子节点中重复出现并且是该子节点的最大值这样叶子节点就包含所有数据的全集 ③.叶子结点会以类似链表的形式互相连接 B树由于是N叉搜索树故高度会比二叉搜索树低从而读取硬盘的次数就比较低B树的所有的查询都是落在叶子节点上中间比较次数差不多故查询操作比较均衡由于B数的叶子节点包含所有数据故只需在叶子节点存放具体数据非叶子节点只需存放索引值即可这样极大节省了内存空间就有可能将非叶子节点放进内存中缓存进一步降低硬盘IO的次数。 ♪索引的使用 ♩查看索引 创建主键约束 PRIMARY KEY 、唯一约束 UNIQUE 、外键约束 FOREIGN KEY 时会自动创建对应列的索引 语法 show index from 表名; mysql create table student(id int primary key auto_increment, name varchar(20));
Query OK, 0 rows affected (0.06 sec)mysql show index from student;
----------------------------------------------------------------------------------------------------------------------------------------------
| Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment |
----------------------------------------------------------------------------------------------------------------------------------------------
| student | 0 | PRIMARY | 1 | id | A | 0 | NULL | NULL | | BTREE | | |
----------------------------------------------------------------------------------------------------------------------------------------------
1 row in set (0.01 sec) ♩创建索引 对于非主键、非唯一约束、非外键的字段可以创建普通索引 语法 create index 索引名 on 表名(列名); mysql create index idx_student_name on student(name);
Query OK, 0 rows affected (0.05 sec)
Records: 0 Duplicates: 0 Warnings: 0mysql show index from student;
------------------------------------------------------------------------------------------------------------------------------------------------------
| Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment |
------------------------------------------------------------------------------------------------------------------------------------------------------
| student | 0 | PRIMARY | 1 | id | A | 0 | NULL | NULL | | BTREE | | |
| student | 1 | idx_student_name | 1 | name | A | 0 | NULL | NULL | YES | BTREE | | |
------------------------------------------------------------------------------------------------------------------------------------------------------
2 rows in set (0.00 sec) ♩删除索引 语法 drop index 索引名 on 表名; mysql drop index idx_student_name on student;
Query OK, 0 rows affected (0.03 sec)
Records: 0 Duplicates: 0 Warnings: 0mysql show index from student;
----------------------------------------------------------------------------------------------------------------------------------------------
| Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment |
----------------------------------------------------------------------------------------------------------------------------------------------
| student | 0 | PRIMARY | 1 | id | A | 0 | NULL | NULL | | BTREE | | |
----------------------------------------------------------------------------------------------------------------------------------------------
1 row in set (0.00 sec) 注 ①.创建索引最好是在表创建之初执行如果对已有大量数据的表创建索引会吃掉大量磁盘IO花费很长时间 ②.可以使用explain关键字显示出查询过程中具体的索引使用情况 ③.每个索引列都有对应的B树对于非主键列的索引会先查询该索引列的B树再根据查询结果查询主键列的B树 ♫事务 ♪什么是事务 事务是指在数据库中进行的一组相关的操作被当作一个单独的工作单元处理要么全部执行要么全部回滚。 ♪事务的特性 事务具有以下四个特性 ♩ Atomicity原子性一个事务中的所有操作要么全部成功要么全部失败不能只执行其中部分操作。 ♩ Consistency一致性事务执行前后数据库的状态必须保持一致也就是满足数据库的约束和规则。 ♩ Isolation隔离性当多个事务同时执行时每个事务都应该被视为独立的不能相互影响。每个事务必须独立执行并发执行时不能出现干扰。 ♩ Durability持久性事务完成后其所作的修改应该永久保存在数据库中即使系统出现故障也不应该丢失。 ♪事务的使用 MySQL中开启事务的语句为start transaction提交事务的语句为commit回滚事务的语句为rollback。事务的使用可以保证数据的一致性和完整性避免数据损坏和丢失。 mysql start transaction;
Query OK, 0 rows affected (0.00 sec)mysql insert into student values(1,张三);
Query OK, 1 row affected (0.02 sec)mysql update student set name李四 where name张三;
Query OK, 1 row affected (0.02 sec)
Rows matched: 1 Changed: 1 Warnings: 0mysql commit;
Query OK, 0 rows affected (0.00 sec)