索引
什么是索引
索引本质是数据结构,排好序的快速查找数据结构,可以提高查找效率数据分身之外;
数据库还维护着-一个满足特定查找算法的数据结构,这些数据结构可以在这些数据结构的基础上实现高级查找算法,这种数据结构就是索引
索引的分类
◆主键索引
◆单值索引一个索引只包含单个列,一个表可以有多个单列索引。如果字段会被经常用来检索就可以用单值索引
◆复合索引,一个索引包含多个列如电话簿上姓+名字。最好不超过5个字段
◆唯一索引,所有列的值必须唯一,但是允许有空值
◆普通索引和唯--索引可以称为辅助索引
劣势是什么
◆实际上索引也是-张表,该表保存了主键与索引字段,并指向实体表的记录,索引列也是要占用空间的。
◆虽然索引大大提高了查询速度,但是会降低更新表的速度,如对表进行INSERT,UPDATE,DELETE。 因为更新表示,MySQL不仅要保存数据,还要保存一下索引文件每次更新添加了索引列的字段,都会调整因为更新所带来的键值变化后的索引信息。
◆索引只是提高效率的- - 个因素,如果MySQL有 大数据量的表,就需要花时间研究建立最优秀的索引,或优化查询。
什么时候不需要创建索引
表记录太少如果才几万条数据,不要建索引。三百万数据量创建索引
频繁更新的字段不适合创建索引,因为每次更新不单单是更新了记录还会更新索引
性别,国籍字段。有个公式索引的选择性段中不同的值个数除以总行数。
错误删除语句后
◆手动切割binlog日志并记好切割好的binlog日志文件位置,这里假设为009,备份全部binlog日志
◆找到之前全备数据最后备份到的binlog文件位置并记好位置,这里假设为005
◆用mysqladmin命令将005到008binlog文件中的SQL语句分离出来,并找到drop库的语句将其删掉
◆将之前全备数据导入mysq1服务器
◆将步骤3中分离出的SQL语句导入mysq1服务器
◆将009binlog文件删除,再次刷新binlog日志,到此数据库已恢复成功