文档详情

mysql查询优化实战案例【实例较长,建议慢慢学习】.doc

发布:2024-10-10约1.27万字共28页下载文档
文本预览下载声明

PAGE

PAGE1

mysql查询优化实战案例【实例较长,建议慢慢学习】

这篇文章主要给大家介绍了关于MySQL查询优化分析的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用MySQL具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧

前言

MySQL是关系性数据库中的一种,查询功能强,数据一致性高,数据安全性高,支持二级索引。但性能方面稍逊于非关系性数据库,特别是百万级别以上的数据,很容易出现查询慢的现象。这时候需要分析查询慢的原因,一般情况下是程序员sql写的烂,或者是没有键索引,或者是索引失效等原因导致的。

这时候MySQL提供的EXPLAIN命令就尤其重要,它可以对SELECT语句进行分析,并输出SELECT执行的详细信息,以供开发人员针对性优化.

而且就在查询语句前加上Explain就成:

EXPLAINSELECT*FROMcustomerWHEREidlt;100;

准备

首先需要建立两个测试用表及数据:

CREATETABLE`customer`(

`id`BIGINT(20)unsignedNOTNULLAUTO_INCREMENT,

`name`VARCHAR(50)NOTNULLDEFAULT#39;#39;,

`age`INT(11)unsignedDEFAULTNULL,

PRIMARYKEY(`id`),

KEY`name_index`(`name`)

)ENGINE=InnoDBDEFAULTCHARSET=utf8mb4

INSERTINTOcustomer(name,age)VALUES(#39;a#39;,1);

INSERTINTOcustomer(name,age)VALUES(#39;b#39;,2);

INSERTINTOcustomer(name,age)VALUES(#39;c#39;,3);

INSERTINTOcustomer(name,age)VALUES(#39;d#39;,4);

INSERTINTOcustomer(name,age)VALUES(#39;e#39;,5);

INSERTINTOcustomer(name,age)VALUES(#39;f#39;,6);

INSERTINTOcustomer(name,age)VALUES(#39;g#39;,7);

INSERTINTOcustomer(name,age)VALUES(#39;h#39;,8);

INSERTINTOcustomer(name,age)VALUES(#39;i#39;,9);

CREATETABLE`orders`(

`id`BIGINT(20)unsignedNOTNULLAUTO_INCREMENT,

`user_id`BIGINT(20)unsignedNOTNULLDEFAULT0,`product_name`VARCHAR(50)NOTNULLDEFAULT#39;#39;,

`productor`VARCHAR(30)NOTNULLDEFAULT#39;#39;,

PRIMARYKEY(`id`),

KEY`user_product_detail_index`(`user_id`,`product_name`,`productor`)

)ENGINE=InnoDBDEFAULTCHARSET=utf8mb4

INSERTINTOorders(user_id,product_name,productor)VALUES(1,#39;p1#39;,#39;WHH#39;);

INSERTINTOorders(user_id,product_name,productor)VALUES(1,#39;p2#39;,#39;WL#39;);

INSERTINTOorders(user_id,product_name,productor)VALUES(1,#39;p1#39;,#39;DX#39;);

INSERTINTOorders(user_id,product_name,productor)VALUES(2,#39;p1#39;,#39;WHH#39;);

INSERTINTOorders(user_id,product_name,productor)VALUES(2,#39

显示全部
相似文档