Mysql优化面试题
来源:互联网 发布:php 打印数组内容 编辑:程序博客网 时间:2024/06/07 20:12
最好的优化数据库表的方法就是不查询!!
对于可以不查的数据就不要查,既是可以查三列的数据,就不要查五列,甚至使用*来操作
对于查询操作比较频繁的字段,添加使用索引,提高查询的速度
避免用null,null要用特殊的字节来标注,不利于索引,尽量设置为not null,
能够使用定长满足的就使用定长,如varchar(20) 能解决不要用varchar(100)
索引并不是越多越好,索引可以提高 select 的效率,但同时也降低了 insert 及 update 的效率,因为 insert 或 update 时有可能会重建索引,所以怎样建索引需要慎重考虑,视具体情况而定。一个表的索引数最好不要超过6
加多列联合索引如 index(a,b,c)
应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描
常用字段和不常用字段要分离.,需要结合网站具体的业务来分析,分析字段的查询场景,查询频度低的字段,单拆出来.
对于左前缀不易区分的列 ,建立索引的技巧
如url的索引建立,由于http://www.*.com 可以反转存,或者是伪哈希用crc32 将url转为一个数32位无符号整数,建立索引使用optimize table 表名 ,可以定期优化数据表.
注意: 修复表的数据及索引碎片,就会把所有的数据文件重新整理一遍,使 之 对齐.这个过程,如果表的行数比较大,也是非常耗费资源的操作.
所以,不能频繁的修复.如果表的Update操作很频率,可以按周/月,来修复.
如果不频繁,可以更长的周期来做修复.sql语句的书写,如:如果在b上建立了索引 ,a没有
“where a=1 and b=1”应该改为“where b=1 and a=1”提高效率不论性能如何,不要有子查询和嵌套SQL,尽量不要有join查询,一条大的sql,如果可以分成几个小SQL顺序执行,分了吧,速度会快很多
使用explain命令,观察type列,可以知道是否是全表扫描,和索引的使用形式,观察key可以知道使用了哪个索引,观察key_len可以知道索引是否使用完成,观察rows可以知道扫描的行数是否过多,观察extra可以知道是否使用了临时表和进行了额外的排序操作
查看慢查询日志,找出执行时间长的SQL试着优化去吧~~
MySQL默认没有开启慢查询,开启:set global slow_query_log='ON';慢查询具体操作参考:http://www.emtalk.net/sql/mysql/395.html
慢慢总结面试mysql优化就不怕了,重在积累(…………..)
- Mysql优化面试题
- mysql索引优化面试题
- mysql优化,不用怕面试题了
- mysql优化,不用怕面试题了
- mysql优化,不用怕面试题了
- mysql面试题以及答案包括优化
- mysql优化,不用怕面试题了
- 数据库-面试题-MySQL数据库的优化方法
- mysql面试题--比较浅-索引 数据库优化等
- 【Java面试题】mysql数据库查询优化、索引相关
- Oracle优化面试题
- 数据库优化面试题
- 面试题:数据库优化
- 数据库优化面试题
- Oracle优化面试题
- MYSQL面试题
- Mysql面试题精选
- mysql面试题集锦
- c++5
- php实现页面跳转
- 各种编码UNICODE、UTF-8、ANSI、ASCII、GB2312、GBK详解
- [BZOJ 2705][SDOI2012]Longge的问题:欧拉函数
- 模块介绍和序列化模块
- Mysql优化面试题
- 如何设置滚动条样式?
- webStorm的常用快捷键
- Oracle的substr函数简单用法
- 可视化证明神经网络可以计算任何函数
- C语言qsort函数如何使用
- 第一行代码第二版(郭霖著)笔记之第十一章(百度地图)
- 流程python学习笔记:第二章(1)
- 关于MAVEN项目包冲突问题