## **什么是索引**
#### **什么是索引?**
简单点说 ,在关系数据库中,索引是一种单独的,物理的对数据库表中一列或者多列的值进行排序的一种存储结构。相当于图书的目录,可以根据目录中的页码快速找到需要的内容。
索引提供指向存储在表中的指定列的数据值的指针, 根据你指定的排序顺序对这些指针排序。数据库使用索引找到特定值,然后顺指针找到包含该值得行。
当表中有大量记录时,对表查询,如果是全表搜索,是将所有记录一一取出,和查询条件对比,然后返回满足条件的记录,这样消耗大量数据库系统时间,并造成大量磁盘I/O。 第二种就是在表中建立索引,然后在索引中找到符合查询条件的索引值,最后通过保存在索引中的ROWID 快速找到表中对应的记录。
索引是为了加速对表中的数据行的检索而创建的一种分散的存储结构。索引页面中的行都有逻辑指针。
#### **索引的作用?**
1.快速读取数据
2.保证数据记录的唯一性
3.实现表与表之间的参照完整性
4.在使用orderby ,group by子句进行检索时,索引可以减少排序和分组的时间。
#### **优点:**
1.大大加快数据的检索速度
2.创建唯一性索引,保证数据库中的每一行数据的唯一性。
3.加速表与表之间的连接
4.在使用分组和排序进行检索时,可以显著的减少查询的时间。
#### **缺点:**
1.索引占物理空间,
2.当对表中的数据进行增加,删除和修改的时候,索引也要动态的维护,降低了数据的维护速度。
#### **索引类型:**
单列索引、唯一索引、主键索引和聚集索引。
1.普通索引:没有唯一性的限制,允许为空。可以直接创建create index name on tablename
修改表的时候 alert table tablename add index name ; 创建表的时候 create table tablename( ..index name col)
2.唯一索引:unique index 没有任何两行具有相同索引值。
3.主键索引:数据库中的一列或者列组合的值 唯一标识表中的每一行,该列为表的主键。一个表只能有一个主键,不允许为空,一般在建表的时候同事创建。
- PHP篇
- 函数传值和传引用的区别
- 简述PHP的垃圾回收机制
- 简述CGI、FAST-CGI、PHP-FPM的关系
- 常见正则表达式
- 多进程写文件,如何保证都写成功
- php支持回调函数的数组函数
- MySQL篇
- MySQL的两种存储引擎区别
- 事务的四大特性
- 数据库事务隔离级别
- 什么是索引
- 索引有哪些数据结构,优缺点
- 索引的一些潜规则
- SQL的优化方案
- 简述MySQL的锁机制
- 死锁是怎么产生的?怎么解决?
- 简述MySQL的主从复制过程,延迟问题怎么解决
- 分布式事务的解决方案
- 数据库中间件MyCat
- Linux篇
- Linux常用命令
- 对日志文件的IP出现的次数进行统计,并显示次数最多的前5名
- WEB篇
- 跨域是怎么产生的,如何解决跨域
- Redis篇
- redis介绍
- redis和memcached区别
- redis的持久化方案
- 缓存穿透、击穿、雪崩、预热、更新、降级
- 网络篇
- 计算机网络体系结构
- 简述TCP的三次握手、四次挥手过程
- UDP、TCP 区别,适用场景
- HTTP常见状态码含义
- 设计模式篇
- 单例模式
- 简单工厂模式
- 抽象工厂模式
- 观察者模式
- 策略模式
- 注册模式
- 适配器模式
- 安全篇
- 跨站脚本攻击(XSS)
- 跨站点请求伪造(CSRF)
- SQL 注入
- 应用层拒绝服务攻击
- PHP安全
- 运维篇
- docker面试题
- 消息队列篇
- 架构篇
- 数据结构与算法篇