没有合适的资源?快使用搜索试试~ 我知道了~
首页mysql数据库优化的学习心得
mysql数据库优化的学习心得
需积分: 28 1.1k 浏览量
更新于2023-05-26
评论
收藏 26KB DOCX 举报
MySQL数据库优化心得:选取最适用的字段属性;使用连接(JOIN)来代替子查询(Sub-Queries);使用联合(UNION)来代替手动创建的临时表;事务;锁定表;外键等。
资源详情
资源评论
资源推荐

MySQL 数据库优化心得
关于数据库优化,网上有不少资料和方法,但是不少质量参差不齐,有些总结的不够
到位,内容冗杂。
偶尔发现了这篇文章,总结得很经典,文章流量也很大,所以拿到自己的总结文集中,
积累优质文章,提升个人能力,希望对大家今后开发中也有帮助
1、选取最适用的字段属性
MySQL 可以很好的支持大数据量的存取,但是一般说来,数据库中的表越小,在它
上面执行的查询也就会越快。因此,在创建表的时候,为了获得更好的性能,我们可以将
表中字段的宽度设得尽可能小。
例如,在定义邮政编码这个字段时,如果将其设置为 CHAR(255),显然给数据库增加
了不必要的空间,甚至使用 VARCHAR 这种类型也是多余的,因为 CHAR(6)就可以很好
的完成任务了。同样的,如果可以的话,我们应该使用 MEDIUMINT 而不是 BIGIN 来定义
整型字段。
另外一个提高效率的方法是在可能的情况下,应该尽量把字段设置为 NOTNULL,这
样在将来执行查询的时候,数据库不用去比较 NULL 值。
对于某些文本字段,例如“省份”或者“性别”,我们可以将它们定义为 ENUM 类型。因
为在 MySQL 中,ENUM 类型被当作数值型数据来处理,而数值型数据被处理起来的速度
要比文本类型快得多。这样,我们又可以提高数据库的性能。
2、使用连接(JOIN)来代替子查询(Sub-Queries)
MySQL 从 4.1 开始支持 SQL 的子查询。这个技术可以使用 SELECT 语句来创建一个
单列的查询结果,然后把这个结果作为过滤条件用在另一个查询中。例如,我们要将客户
基本信息表中没有任何订单的客户删除掉,就可以利用子查询先从销售信息表中将所有发
出订单的客户 ID 取出来,然后将结果传递给主查询,如下所示:
?
1
2
DELETEFROMcustomerinfo
WHERECustomerIDNOTin(SELECTCustomerIDFRO
Msalesinfo)
使用子查询可以一次性的完成很多逻辑上需要多个步骤才能完成的 SQL 操作,同时也
可以避免事务或者表锁死,并且写起来也很容易。但是,有些情况下,子查询可以被更有















安全验证
文档复制为VIP权益,开通VIP直接复制

评论0