数据库性能优化小结
来源:互联网 发布:淘宝代理客服公司 编辑:程序博客网 时间:2024/05/04 12:02
近期部门有大牛分享了下数据库的相关知识,自己这里趁热也总结一下对应测试来说比较容易涉及到的性能优化方面的知识。
数据库的性能从宏观上可以分为:查询、插入;这里小结了下影响这2个方面性能的因素。
索引影响查询:
不加索引 ==> 全表扫描;查询效率最低
主键/唯一索引==主键索引扫描
ALTER TABLE `table_name` ADD PRIMARY KEY (`ID`);ALTER TABLE `table_name` ADD KEY (`column`); ALTER TABLE `table_name` ADD UNIQUE (`column`); ALTER TABLE `table_name` ADD FULLTEXT (`column`);
普通索引
ALTER TABLE `table_name` ADD INDEX index_name (`column`);ALTER TABLE `table_name` ADD INDEX index_name (`column1`, `column2`, `column3`);
普通压缩索引
ALTER TABLE `table_name` ADD INDEX index_name (`column`) compress;
位图索引(mysql不支持、oracle支持)
ALTER TABLE `table_name` ADD bitmap INDEX index_name (`column`);
位图索引+并行扫描;查询速度最快
ALTER TABLE `table_name` ADD bitmap INDEX index_name (`column`) parallel 8;
字段类型+查询方式
索引建议针对数字类型;如果为字符等其它类型,在查询的时候尽量使用闭区间,如:between;不用开区间,如:>=
索引影响插入:
全局索引
create index i_id on test(id) global;
分区索引
create index i_id on test(id) local;
如果要经常性或大批量的插入操作,减少全局索引的设置。
sql影响查询:
- 联表查询需要连接条件
- 少用select *
- 避免使用LIKE '%parm1%'
- 不要在建立的索引的数据列上进行下列操作:【这些操作都会使索引失效】
- 避免对索引字段进行计算操作
- 避免在索引字段上使用not,<>,!=
- 避免在索引列上使用IS NULL和IS NOT NULL
- 避免在索引列上出现数据类型转换
- 避免在索引字段上使用函数
- 避免建立索引的列中使用空值
- 避免嵌套多级子查询;使用临时表
- 尽可能的合并成一个sql操作;减少sql操作
- 避免在WHERE子句中使用in,not in,or 或者having;可以使用 exist 和not exist代替 in和not in
- 不要以字符格式声明数字,要以数字格式声明字符值。
- 尽量少用带有DISTINCT,UNION,MINUS,INTERSECT,ORDER BY的SQL语句
- WHERE 后的条件顺序
- mysql 采用从左至右的顺序解析WHERE子句,那些可以过滤掉最大数量记录的条件写在WHERE子句的前面
- ORACLE 采用从右至左的顺序解析WHERE子句,那些可以过滤掉最大数量记录的条件写在WHERE子句的末
- Group BY 后面跟的分组条件越多越慢,切忌不要无谓的添加分组条件
- 在sql文中转换类型会非常的慢 尽量不要使用 to_char, to_date 等函数
- <,> 替换为 <=, >=
sql执行计划:
mysql:http://www.cnblogs.com/ggjucheng/archive/2012/11/11/2765237.html
oracle数据库自身性能数据表:
http://www.cnblogs.com/advocate/archive/2010/05/07/1729830.html
sql慢日志记录
0 0
- 数据库性能优化小结
- javascript性能优化小结
- iOS性能优化小结
- web性能优化小结
- Android性能优化小结
- android性能优化小结
- Android性能优化小结
- 优化mysql数据库小结
- mysql数据库优化小结
- mysql数据库优化小结
- 数据库sql优化小结
- mysql数据库优化小结
- mysql数据库优化小结
- 数据库优化策略小结
- ASP.NET性能优化小结
- Tomcat 6 性能优化 小结
- Tomcat 6 性能优化 小结
- Tomcat 6 性能优化小结
- 《数据结构与算法分析》学习笔记一:表、栈和队列
- 今天开始学Pattern Recognition and Machine Learning (PRML),章节1.2,Probability Theory (下)
- Hibernate原生SQL(createSQLQuery,通过Transformers.ALIAS_TO_ENTITY_MAP设置生成MAP)查询,自动读取ORACLE CLOB内容的解决方案
- at24c02系列和at24c256系列的比较
- RHEL Linux详细安装教程
- 数据库性能优化小结
- Perl包和模块
- python实现堆排序的三种方式
- 57 利用sed处理windows和Unix文档中的行结束符
- 解析高清监控录像文件的存储容量
- android应用程序如何调用支付宝接口
- 聊天窗口界面编写
- Android 图标右上角添加数字提醒
- .net 从WebService的restful api接口以POST方式请求并获取返回值