MySQL常见面试题-4
Posted 四猿外
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL常见面试题-4相关的知识,希望对你有一定的参考价值。
索引的底层实现原理和优化
B+树, 经过优化的B+树
主要是在所有的叶子结点中增加了指向下一个叶子节点的指针, 因此InnoDB 建议为大部分表使用默认自增的主键作为主索引。
什么情况下设置了索引但无法使用
1、以“ %” 开头的LIKE 语句,模糊匹配
2、OR 语句前后没有同时使用索引
3、数据类型出现隐式转化(如varchar 不加单引号的话可能会自动转换为int 型)
实践中如何优化mysql
最好是按照以下顺序优化:
1、SQL 语句及索引的优化
2、数据库表结构的优化
3、系统配置的优化
4、硬件的优化
优化数据库的方法
1、选取最适用的字段属性,尽可能减少定义字段宽度,尽量把字段设置NOTNULL,例如’省份’ 、’ 性别’最好适用ENUM
2、使用连接(JOIN)来代替子查询
3、适用联合(UNION)来代替手动创建的临时表
4、事务处理
5、锁定表、优化事务处理
6、适用外键,优化锁定表
7、建立索引
8、优化查询语句
为表中得字段选择合适得数据类型
字段类型优先级: 整形>date,time>enum,char>varchar>blob,text
优先考虑数字类型,其次是日期或者二进制类型, 最后是字符串类型,同级别得
数据类型,应该优先选择占用空间小的数据类型
存储时期
Datatime:以YYYY-MM-DD HH:MM:SS 格式存储时期时间,精确到秒,占用8 个字节得存储空间,datatime 类型与时区无关
Timestamp:以时间戳格式存储,占用4 个字节,范围小1970-1-1 到2038-1-19,显示依赖于所指定得时区,默认在第一个列行的数据修改时可以自动得修改timestamp 列得值
Date:(生日) 占用得字节数比使用字符串.datatime.int 储存要少,使用date 只需要3 个字节, 存储日期月份,还可以利用日期时间函数进行日期间得计算Time:存储时间部分得数据
注意:
不要使用字符串类型来存储日期时间数据( 通常比字符串占用得储存空间小,在进行查找过滤可以利用日期得函数)
使用int 存储日期时间不如使用timestamp 类型
以上是关于MySQL常见面试题-4的主要内容,如果未能解决你的问题,请参考以下文章