MySQL 性能优化的 9 种知识.docx
《MySQL 性能优化的 9 种知识.docx》由会员分享,可在线阅读,更多相关《MySQL 性能优化的 9 种知识.docx(19页珍藏版)》请在第一文库网上搜索。
1、MySQL性能优化的9种知识,面试再也不怕了!1、选择最合适的字段属性Mysql是一种关系型数据库,可以很好地支持大数据量的存储,但是一般来说,数据库中的表越小,在它上面执行的查询也就越快。因此,在创建表的时候,为了获得更好的性能,我们可以将表中字段的宽度舍得尽可能小。例如:在定义邮政编码这个字段时,如果将其设置为char (255),显然给数据库增加了不必要的空间,甚至使用varchar这种类型也是多余的,因为char(6)就可以很好地完成了任务。同样的如果可以的话,我们应该是用MEDIUM完T而不是BIGINT来定义整形字段。2、尽量把字段设置为NOT NULL在可能的情况下,尽量把字段设
2、置为NOT NULL,这样在将来执行查询的时候,数据库不用去比较NULL值。对于某些文本字段来说,例如“省份”或者“性别”,我们可以将他们定义为ENUM(枚举)类型。因为在MySQL中,ENUM类型被当做数值型数据来处理,而数值型数据被处理起来的速度要比文本类型要快得多。这样我们又可以提高数据库的性能。3、使用连接(JOIN)来代替子查询(Sub-Queries)MySQL从4. 1开始支持SQL的子查询。这个技术可以使用select语句来创建一个单例的查询结果,然后把这个结果作为过滤条件用在另一个查询中。例如:我们要将客户基本信息表中没有任何订单的客户删除掉,就可以利用子查询先从销售信息表中
3、将所有发出订单的客户id取出来,然后将结果传递给主查询,如下图所示:DELETE FROM customerinfoWHERE Customers NOT in (SELECT custoierid FROM salesinfo)https:/blog. csdn. net/we如果使用连接(JOIN)来完成这个工作,速度将会快很多,尤其是当salesinfo表中对CustomerlD建有索引的话,性能将会更好,查询如下:SELECT * FROM customerinfoLEFT JOIN salesinfo ON customerinfo.customerid -salesinfo.cus
4、tomer:https:/blog. csdn. neWHERE salesinfo.customerid IS NULL连接(JOIN)之所以更有效率一些,是因为MySQL不需要在内存中创建临时表来完成这个逻辑上需要两个步躲的查询工作。另外,如果你的应用程序有很多JOIN查询,你应该确认两个表中JOIN的字段是被建立过索引的。这样MySQL内部 会启动为你优化JOIN的SQL语句的机制。而且这些被用来JOIN的字段,应该是相同的类型的。例如:如果你要把DECIMAL字段和一个INT字段JOIN在一起,MySQL就无法使用他们的索引。对于那些STRING类型,还需要有相同的字符集才行。(两个表
5、的字符集可能不相同)。inner join内连接也叫做等值连接,left/right join是外链接。SELECT A. id, A. name, B. id, B. name FROM A RIGHT JOIN ON B A. id= B. id;经过多方面的证实inner join性能比较快,因为inner join是等值连接,或许返回的行数比较少。但是我们要记得有些语句隐形的用到了等值连接,如:SELECT A. id, A. name, B. id, B. name FROM A, B WHERE A. id = B. id;sql中的连接查询有inner join(内连接)、lef
6、t join(左连接)、right join (右连接)、full join (全连接)四种方式,它们之间其实并没有太大区别,仅仅是查询出来的结果有所不同。例如我们有两张表:Persons1, 表:ld_PLastNameFirstNameAddressCity1AdamsJohnOxford StreetLondon2BushGeorgeFifth AvenueNew York3CarterThomasChangan StreetBeijing“Orders” 表:M_OOrderNoW_P177895324467833224561424562153476465Orders表通过外键Td_P
7、和Persons表进行关联。inner join (内连接),在两张表进行连接查询时,只保留两张表中完全匹配的结果集。我们使用inner join对两张表进行连接查询,sql如下:SELECT p. LastName, p. FirstName, o. OrderNoFROM Persons pINNER JOIN Orders oON p. Id_P=o. Id.P and 1=1 一用and连接多个条件ORDER BY p. LastName杳询结果集:LastNameFirstNameOrderNoAdamsJohn22456AdamsJohn24562CarterThomas77895
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MySQL 性能优化的 种知识 性能 优化 知识