常用数据库优化

数据库优化自然是我们经常需要注意的地方,尤其使用mybatis的人知道,XML中sql一目了然,一旦你的sql写的不够超前,就会受到别人的指点,说这个可以这样改改,那个可以那样改改。起初,对于老程序员的指指点点本人总是不以为然,后面渐渐就发现,有些基础东西我们必须去学会、去运用。

数据库的优化自然是一个很深奥的东西,尤其是Oracle。这里就不讨论那些深奥有难懂的东西了,本人使用Sqlserver 、PostgreSQL 、MySQL 等,所以,这些关系型数据库的优化大多是差不多了,这里指给出最常见,最基础的东西;

第一类问题:查询语句中尽量减少全表扫描

查询缓慢很多都是因为语句执行时引擎放弃索引搜索而直接采用了全表扫描,具体如下:

1、where 条件 以及 order by 涉及的列应该为该列建立索引

2、where 条件中避免对字段进行null判断,所以建议为字段设置默认值

3、where 条件中避免使用or,建议使用union all 替代 or

4、where 条件中避免使用 in not in ,本周就是or,建议使用exist 代替

5、where 条件中避免使用 like ‘%some%’,模糊查询或者使用like都会全表检索

6、where 条件中避免运算或函数操作,应该把运算放在关系条件的右边,等待预编译计算

7、where 条件中避免使用1=1,尽管这样处理在代码中是非常灵活的

8、count(*)应该改成count(1)

第二类问题:其他优化,以及个人建议

9、varchar/nvarchar 代替 char/nchar ,因为首先变长字段存储空间小,其次对于查询来说,在一个相对较小的字段内搜索效率要高些。

10、delete insert update 都会进行锁表,所以对于经常进行查询的关系,应该尽量把经常操作的字段和经常查询的字段进行分离成两个关系分别存储

11、尽量少使用select *,没用的字段不需要返回

时间: 2024-10-18 16:04:37

常用数据库优化的相关文章

orm常用字段和数据库优化查询

一.Django ORM 常用字段和参数 1.常用字段 models中所有的字段类型其实本质就那几种,整形varchar什么的,都没有实际的约束作用,虽然在models中没有任何限制作用,但是还是要分门别类,对于校验性组件校验非常有用就比如说邮箱类型,你在输入邮箱的时候如果不按照邮箱格式输入,瞎鸡儿输入会提示你不合法,虽然输入的是字符串,但是不是规定的邮箱字符串 AutoField() [int primary key auto_increment)] int自增列,必须填入参数 primary

MySQL数据库存储引擎与数据库优化

存储引擎 (1)MySQL可以将数据以不同的技术存储在文件(内存)中,这种技术就成为存储引擎. 每种存数引擎使用不同的存储机制.索引技巧.锁定水平,最终提供广泛且不同的功能. (2)使用不同的存储引擎也可以说不同类型的表 (3)MySQL支持的存储引擎 MyISAM InnoDB Memory CSV Archive 查看数据表的创建语句: SHOW CREATE TABLE 表名 相关概念: (1).并发控制:一个人读数据,另外一个人在删除这个数据. 当多个连接对记录进行修改时保证数据的一致性

[转]浅析大数据量高并发的数据库优化

链接:http://www.uml.org.cn/sjjm/201308264.asp 高并发数据库可以同时处理海量信息,应用范围很广.今天我们将讨论的是大数据量高并发的数据库优化,希望对大家有所帮助. 一.数据库结构的设计 如果不能设计一个合理的数据库模型,不仅会增加客户端和服务器段程序的编程和维护的难度,而且将会影响系统实际运行的性能.所以,在一个系统开始实施之前,完备的数据库模型的设计是必须的. 在一个系统分析.设计阶段,因为数据量较小,负荷较低.我们往往只注意到功能的实现,而很难注意到性

数据库优化方法整理

数据库优化的目标无非是避免磁盘I/O瓶颈.减少CPU利用率和减少资源竞争. 在基于表驱动的信息管理系统(MIS)中,基本表的设计规范是第三范式(3NF). 第三范式的基本特征是非主键属性只依赖于主键属性. 基于第三范式的数据库表设计具有很多优点: 一是消除了冗余数据,节省了磁盘存储空间: 二是有良好的数据完整性限制,即基于主外键的参照完整限制和基于主键的实体完整性限制,这使得数据容易维护, 也容易移植和更新: 三是数据的可逆性好,在做连接(Join)查询或者合并表时不遗漏.也不重复: 四是因消除

数据库优化基础

一.主题 大数据下,如何优化数据库才能使系统的性能有较好的提升. 改善数据库的结构有两种: 一种是采用存储过程代替普通的SQL语句或者优化低效率的SQL语句 另外一种就是使用数据库系统中增强索引和规划分区表进行优化 二.阅读结构 |-数据库优化 |-数据库分库分表 |-垂直切分 |-水平切分 |-数据库分区 |-垂直分区 |-水平分区 |-读写分离 |-主主 |-主从 三.数据库分库分表 1.什么是分库分表? 把原本存储于一个库的数据分块存储到多个库上 把原本存储于一个表的数据分块存储到多个表上

数据库优化小技巧总结

对于数据库优化: 数据库优化的目标无非是避免磁盘I/O瓶颈.减少CPU利用率和减少资源竞争基于第三范式的数据库表设计具有很多优点:一是消除了冗余数据,节省了磁盘存储空间:二是有良好的数据完整性限制,即基于主外键的参照完整限制和基于主键的实体完整性限制,这使得数据容易维护,也容易移植和更新:三是数据的可逆性好,在做连接(Join)查询或者合并表时不遗漏.也不重复:四是因消除了冗余数据(冗余列),在查询(Select)时每个数据页存的数据行就多,这样就有效地减少了逻辑I/O,五是对大多数事务(Tra

MySQL数据库优化详解(收藏)

MySQL数据库优化详解 mysql表复制 复制表结构+复制表数据mysql> create table t3 like t1;mysql> insert into t3 select * from t1;mysql索引 ALTER TABLE用来创建普通索引.UNIQUE索引或PRIMARY KEY索引ALTER TABLE table_name ADD INDEX index_name (column_list)ALTER TABLE table_name ADD UNIQUE (colu

Mysql数据库优化技术之配置篇、索引篇 ( 必看 必看 转)

转自:Mysql数据库优化技术之配置篇.索引篇 ( 必看 必看 ) (一)减少数据库访问 对于可以静态化的页面,尽可能静态化 对一个动态页面中可以静态的局部,采用静态化 部分数据可以生成XML,或者文本文件形式保存 使用数据缓存技术,例如: MemCached (二)优化的检测方法 1.用户体验检测 2.Mysql状态检测 在Mysql命令行里面使用show status命令,得到当前mysql状态. 主要关注下列属性: key_read_requests (索引读的请求数)(key_buffe

面试技巧,如何通过索引说数据库优化能力,内容来自Java web轻量级开发面试教程

上星期写了一个篇文章,数据库方面的面试技巧,如何从建表方面展示自己能力,承蒙管理员抬举,放入首页,也承蒙各位厚爱,两天内收获了将近770个点击,也一度进入48小时热榜. 为了感谢管理员和大家的支持,再根据我的面试经验原创一篇关于索引方面如何推销自己的文章.这内容也来自我写的书 java web轻量级开发面试教程. 如果我们需要招个Java方面的高级程序员,一方面看年限(本科3年),具体到数据库方面的技能要求,包括如下三个方面: 第一,是否会基本的增删改查,存储过程等技能,是否会用些group b