mysql性能优化
来源:互联网 发布:java框架电子书 编辑:程序博客网 时间:2024/06/15 18:08
- 表的设计合理化(3NF)
- 添加适当索引(详解)
- 分表技术(水平分割 | 垂直分割)
- 读写(写:update,delete,add)分离
- 存储过程(模块化编程,可以提高速度)
- 对mysql 配置优化(配置最大并发数:my.ini,调整缓存大小)
- mysql服务器硬件升级
- 定时的去清除不需要的数据,定时进行碎片处理《高性能Mysql》
1. 我们的某些查询语句会让Mysql不适用缓存:《》 详解:
2. 当只需要一行数据时,使用Limit 1:
例如:查看是否有中国用户:
3. 为搜索字段建立索引:
3.1 哪些字段上适合添加索引?
1>较频繁的作为查询条件字段
2>唯一性太差的字段不适合:where sex='男';
3>更新非常频繁的字段不适合 where loginCount = 1;
4>不会出现在where 字句中的字段不应该创建索引
3.2下列的情况不使用索引
1>如果条件中有or,即使其中有条件带索引也不会使用
2>对于多列索引,不是使用的第一部分,索引也不会起作用
3>like查询以%(通配符)开头
4>列类型是字符串,在条件中没有使用引号引用起来
5>如果mysql估计使用全表扫描更快,则不使用索引
4 在join表时使用相同类型的字段并将其索引:
5.避免使用 SELECT *: 需要什么取什么
6.永远为每张表设置一个ID作为主键(int 自增)
除了关联表的外键:这个表的主键通过若干个别的表的主键构成
7.使用ENUM而不是varchar—->tinyint
8.从PROCEDURE ANALYSE()取得建议,要有数据的基础
9.尽可能的使用 not null
10.将IP地址存为 unsigned INT
11.固定长度的表会更快(varchar text blob)
将表分割为一个是定长的,一个是非定长的
12垂直分割技术:
对于用户表来说:只有用户ID,用户名,口令,角色会经常使用
last_login字段,会在用户登录的每一次更新。每次更新都会导致该表的查询缓存被清空,所以将他放到另一个表
被分出去的字段形成的表,不会经常的去join
13.拆分大的DELETE或INSERT语句:因为会锁表,使用LIMIT,更新部分
14越小的列会越快,但要留够足够的扩展空间
15选择正确的存储引擎:
myISAM:适合需要大量查询的应用 (更新一个字段,整个表都会被锁)
InnoDB:写操作比较多的,会很优秀,支持行锁和事务
SQL语句优化:
http://database.51cto.com/art/201407/445934.htm###
- 性能优化之--MySql优化
- Mysql性能优化-查询优化
- 性能优化之MySQL优化
- MySQL性能优化
- MySQL性能优化
- MySQL 性能优化
- mysql 性能优化
- MySQL 性能优化
- MySQL性能优化
- MySQL 性能优化
- MySQL性能优化TIPS
- MySQL性能优化
- MySQL 性能优化
- MySQL性能优化
- MySQL性能优化
- MySQL 性能优化
- mysql sort 性能优化
- MySQL 性能优化
- Linux入门4
- 爬虫技术(05)神箭手爬虫回调函数
- sqlServer存储过程查询语句
- Java实现二叉树,以及先序、中序、后序遍历算法的实现
- tensorflow variable的保存和加载
- mysql性能优化
- Web项目中 .classpath、.mymetadata、.project文件的作用
- Banner 图片无限轮播
- 《Machine Learning》第二讲 线性回归与梯度下降
- 遍历文件夹
- Java对List的常用操作
- Linux下安装及简单使用nmap
- Redis 讲解系列之 与Spring集成(二)
- 自定义Toas