mysql面试
什么是索引:
帮助MySQL高效获取数据的数据结构。
提高查找效率,类比字典。
可以简单地理解为:排好序的快速查找数据结构。
数据本身之外,数据库还维护着一个满足特定查找算法的数据结构,这些数据结构以某种方式指向数据,这样就可以在这些数据结构的基础上实现高级查找算法,这种数据结构就是索引。,这样就可以在这些数据结构的基础上实现高级查找算法,这种数据结构就是索引。
索引本身也很大,不可能全部存储在内存中,因此索引往往以索引文件的形式存储在磁盘上。
平常所说的索引,如果没有特别指明,都是B树(多路)
索引的优势:
1.提高数据的查找效率,降低数据的IO成本。
2.通过索引列对数据进行排序,降低数据排序成本,降低CPU的消耗。
索引的劣势:
1.索引也是一张表,该表保存了主键与索引字段,并指向实体表记录,所以索引列也是要占空间的。
2.因此索引大大提高查询速度的同时也会降低表的更新速度,如对数据库进行修改和插入和删除。因为更新表时不仅要保存数据,还要保存一下索引文件每次更新添加了索引列的字段,都会调整因为更新所带来的键值变化后的索引信息。
2.索引知识提高效率的一个因素,如果你的MySQL有大数据量的表,就要花时间研究建立最优秀的索引,或优化查询。
索引分类:
1.单值索引:即一个索引只包含单个列,一个表可以有多个单列索引。
2.唯一索引:索引列的值必须唯一,但允许有空值。
3.复合索引:一个索引包含多个列
*一张表最多不要建超过5个索引。
基本语法
1.创建索引 create [unique] index indexname on mytable(columnname(length)); alter mytable add [unique] index[indexname] on (columnname(length)) 2.删除 drop index [indexname] on mytable 3.查看 show index from table_name
事务特性:
1.原子性
2.一致性:事务必须使数据库从一个一致状态转换到另一个一致状态。
3.隔离性:事物的隔离性指一个事务的执行不能被其他事务所干扰
4.永久性:持久性是指一个事务一旦提交,它对数据库中数据的改变是永久性的,接下来的其他操作和数据库故障不应该对其有任何影响。