数据库的优化
数据库 优化
2023-09-14 09:00:10 时间
1.对查询进行优化,要尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:select id from t where num is null 注意:最好不要给数据库留NULL,尽可能的使用 NOT NULL填充数据库.(备注、描述、评论之类的可以设置为 NULL,其他的,最好不要使用NULL) 不要以为 NULL 不需要空间,比如:char(100) 型,在字段建立时,空间就固定了, 不管是否插入值(NULL也包含在内),都是占用 100个字符的空间的,如果是varchar这样的变长字段, null 不占用空间。
3.应尽量避免在 where 子句中使用 != 或 <> 操作符,否则将引擎放弃使用索引而进行全表扫描。 4.应尽量避免在 where 子句中使用 or 来连接条件,如果一个字段有索引,一个字段没有索引,将导致引擎放弃使用索引而进行全表扫描,如:select id from t wherenum=10orName='admin'
不过可以这样查询:select id from t wherenum=10 unionall select id from t where Name='admin'
5.in 和 not in 也要慎用,否则会导致全表扫描,如:select id from t where num in (1,2,3) 对于连续的数值,能用 between 就不要用 in 了: select id from t where num between 1 and 3
很多时候用 exists 代替 in 是一个好的选择
select id from t where name like ‘%abc%’ 这也将导致全表扫描。
6.select count(*) from table;这样不带任何条件的count会引起全表扫描,并且没有任何业务意义,是一定要杜绝的。
7.索引并不是越多越好,索引固然可以提高相应的 select 的效率,但同时也降低了 insert 及 update 的效率,因为 insert 或 update 时有可能会重建索引,所以怎样建索引需要慎重考虑,视具体情况而定。一个表的索引数最好不要超过6个,若太多则应考虑一些不常使用到的列上建的索引是否有 必要。
8.尽量使用数字型字段,若只含数值信息的字段尽量不要设计为字符型,这会降低查询和连接的性能,并会增加存储开销。这是因为引擎在处理查询和连 接时会逐个比较字符串中每一个字符,而对于数字型而言只需要比较一次就够了。
9.尽可能的使用 varchar/nvarchar 代替 char/nchar ,因为首先变长字段存储空间小,可以节省存储空间,其次对于查询来说,在一个相对较小的字段内搜索效率显然要高些。
10.任何地方都不要使用 select * from t ,用具体的字段列表代替“*”,不要返回用不到的任何字段。
相关文章
- mysq数据库远程连接报错,不允许远程连接
- 修改oracle数据库用户名和密码
- B站万亿级数据库选型与架构设计实践
- Android数据库大批量数据插入优化
- MS SQL修改数据库名称
- 数据库事务的四个特性和含义
- smarty 对数据库的简单操作。
- Centos 6.8 配置mysql数据库主从同步
- MySQL优化详解(二)——数据库架构和使用优化
- MySQL专题 2 数据库优化 Slow Query log
- Sql Server 导入另一个数据库中的表数据
- mybatis性能优化之减少数据库连接
- 解密 Oracle 数据库 SQL 执行历史:掌握多种实现方式,轻松实现 SQL 监控与性能优化
- 【数据库优化方案】后端思维--数据库性能优化方案
- 〖Python 数据库开发实战 - MySQL篇⑩〗- MySQL 中不同的数据类型
- 〖Python 数据库开发实战 - MongoDB篇⑩〗- MongoDB的常用表达式
- 数据库技术丨GaussDB(DWS)数据同步状态查看方法
- 技术解读丨分布式缓存数据库Redis大KEY问题定位及优化建议
- 【面试攻略】msyql数据库优化
- 【成为架构师课程系列】数据库优化方案 1:查询请求增加时,如何做主从分离?
- SQL Server数据库 bcp导出备份文件应用
- mysql数据库性能优化参考——筑梦之路
- 如何优化数据库,如何提高数据库的性能?
- MySQL数据库高并发优化配置
- TiDB数据库是什么?
- 猿创征文 | 国产数据库之在k8s环境下部署RadonDB MySQL集群