1.如果定义了主键, 那么系统会自藕丁将主键建立索引, 如果没有 , 则会选择第一个非NULL 作为主键 , 如果还是没有 , 则会使用隐性的 ROWID , 此ROWID 不可像Oracle那样可以显示.
2.为什么索引可以提高效率
因为索引是有序的 , 不用没一个记录都去查找 , 二分法可以极速定位 .
3. 联合索引.
(a,b,c) 这种 , 三个键作为索引 , 也可以是a,b , 但是不可以b,c
4. 什么情况下不建或少建索引,
1.表记录太少
2.经常插入 , 删除, 修改的 表
3 . 字段重复值太多 , 一班不会建索引 , 但是可以考虑混合索引 .
5.什么是表分区? 和分表有什么区别 .
根据一定的规则, 把一张表拆分成很多小表 , 容易管理 , 但是底层却是由很多物理分区组成的.
分表则是由很多张表 .
6.表分区有什么好处.
分区表分布在很多不同的物理设备上 ,从而高效利用多个硬件设备.
和单个磁盘或者文件系统相比 , 可以存储多个数据.
2.优化查询 .其实类似于HDFS , 分而治之 , 尤其是对count , sun类型的处理
6. 一个表最多只能有1024个分区
7.MySQL支持的分区类型有哪些?
RANGE分区: 这种模式允许将数据划分不同范围。例如可以将一个表通过年份划分成若干个分区
LIST分区: 这种模式允许系统通过预定义的列表的值来对数据进行分割。按照List中的值分区,与RANGE的区别是,range分区的区间范围值是连续的。
HASH分区 :这中模式允许通过对表的一个或多个列的Hash Key进行计算,最后通过这个Hash码不同数值对应的数据区域进行分区。例如可以建立一个对表主键进行分区的表。
KEY分区 :上面Hash模式的一种延伸,这里的Hash Key是MySQL系统产生的
7.MySQL 优化.
为搜索字段建立索引
2.开启查询缓存 , 优化查询 ,
3.如果表太长 , 垂直分表
4.选择正确的存储引擎
5.如果只需要一部分或者一行数据 , 记得使用limit , 这样搜索到结果会立即停止继续遍历.
InnoDB 和 MyISAM
前者支持事物 , 后者不支持
前者不支持全文搜索 , 后者支持
5.5版本后默认是 InnoDB
涉及到大量增删改 , 使用前者InnoDB
网友评论