mysql 开发进阶篇系列 5 SQL 优化(表优化)
2018-07-23 11:57
666 查看
一. 使用sql提示
sql 提示(sql hint)是优化数据库的一个重要手段, 是在sql语句中加入一些人为的提示来达到优化操作的目的。1.1 use index
在查询语句中表名的后面,添加use index 强制mysql使用该索引,不考虑其它索引。
EXPLAIN SELECT * FROM city USE INDEX(ix1) WHERE city_id=1;
1.2 ignore index
在查询语句中表名的后面,添加ignore index,使用mysql忽视一个或者多个索引。
EXPLAIN SELECT * FROM city IGNORE INDEX(ix1) WHERE city_id=14;
1.3 force index
在查询语句中表名的后面,添加force index,当mysql不走索引时,强制走索引。
-- 某些情况下,有索引但mysql不走索引,强制使用 EXPLAIN SELECT * FROM city FORCE INDEX (PRIMARY) WHERE city_id>0;
二 .优化数据库对象
1. 优化表的数据类型在mysql中,可以使用函数procedure analyse()对当前应用的表进行分析。对表列中的数据类型给出合理的改进建议,用户可以根据实际情况来考虑。
例如:下面生产库中有一个菜单表,字段类型及长度如下:
-- 使用procedure analyse()分析 SELECT * FROM Adm_Menu PROCEDURE ANALYSE(16,256);
下面remark 字段里面值的最大长度的是30长度, 所以系统建议给出30长度:
2. 通过折分提高表的访问效率
折分可以是垂直拆分和水平拆分,这是一种设计思路,这篇不讲。
3. 逆规范化
逆规范化也叫提高表的冗余,有利于提高查询性能。这是一种设计思路,这篇不讲。
4. 使用中间表提高统计查询速度
比如有一个大表记录了客户的每天消费记录,需要按月统计总消费金额, 可以放入到中间表,减轻大表的频繁查询. 这是一种设计思路,这篇不讲。
相关文章推荐
- mysql 开发进阶篇系列 3 SQL 优化(索引使用方法)
- mysql 开发进阶篇系列 4 SQL 优化(各种优化方法点)
- mysql 开发进阶篇系列 1 SQL优化(show status命令)
- mysql 开发进阶篇系列 2 SQL优化(explain分析)
- mysql 开发进阶篇系列 13 锁问题(关于表锁,死锁示例,锁等待设置)
- mysql 开发进阶篇系列 53 权限与安全(账号管理的各种权限操作 上)
- mysql 开发进阶篇系列 16 MySQL Server(myisam key_buffer)
- mysql 开发进阶篇系列 18 MySQL Server(innodb_buffer_pool_size)
- MySQL 数据库性能优化之SQL优化(这是 MySQL数据库性能优化专题 系列的第四篇文章)
- mysql 开发进阶篇系列 52 权限与安全(系统四个权限表的粒度控制关系)
- MySQL架构优化实战系列4:SQL优化步骤与常用管理命令
- mysql 开发进阶篇系列 51 权限与安全(权限表user,db详细介绍 )
- Mysql 千万以上数据优化方法(一,SQL优化),月薪30K之路系列
- mysql 开发进阶篇系列 7 锁问题(innodb锁争用情况及锁模式)
- mysql 开发进阶篇系列 12 锁问题(隔离级别下锁的差异)
- mysql 开发进阶篇系列 19 MySQL Server(innodb_flush_log_at_trx_commit与sync_binlog)
- MySQL 优化系列 --2.常见SQL技巧
- mysql 开发进阶篇系列 8 锁问题 (共享锁与排它锁演示)
- mysql 开发进阶篇系列 49 表的数据导出(into outfile,mysqldump)
- mysql 开发进阶篇系列 9 锁问题 (Innodb 行锁实现方式)