如何分析mysql语句性能_mysql语句性能分析(一)

1.使用explain语句去查看分析结果

如explain select * from test1 where id=1;

会出现:id  selecttype  table  type possible_keys  key key_len  ref rows  extra各列。

其中,

type=const表示通过索引一次就找到了;

key=primary的话,表示使用了主键;

type=all,表示为全表扫描;

key=null表示没用到索引。type=ref,因为这时认为是多个匹配行,在联合查询中,一般为REF。

explain mysql语句;

eg:

EXPLAIN

SELECT

GoodsSku.sku_id,

GoodsSku.barcode,

GoodsSku.sku_name,

GoodsTypeSpec1.spec_name AS sku_spec1,

GoodsTypeSpec2.spec_name AS sku_spec2,

GoodsCategory1.cat_name AS catName1,

GoodsCategory2.cat_name AS catName2,

GoodsCategory3.cat_name AS catName3,

GoodsUnit.sale_unit,

SellerBase.seller_name,

IFNULL(

(

SELECT

SUM(WmsBatchItem.sku_num)

FROM

wms_batch_base AS WmsBatchBase

INNER JOIN wms_batch_item AS WmsBatchItem ON WmsBatchItem.batch_id = WmsBatchBase.batch_id

WHERE

WmsBatchItem.sku_id = GoodsSku.sku_id

),

0

) AS qichuNum,

IFNULL(

(

SELECT

SUM(

WmsBatchItem.sku_num * WmsBatchItem.sku_price

)

FROM

wms_batch_base AS WmsBatchBase

INNER JOIN wms_batch_item AS WmsBatchItem ON WmsBatchItem.batch_id = WmsBatchBase.batch_id

WHERE

WmsBatchItem.sku_id = GoodsSku.sku_id

),

0

) AS qichuPrice

FROM

goods_sku AS GoodsSku

INNER JOIN goods_base AS GoodsBase ON GoodsSku.goods_id = GoodsBase.goods_id

LEFT JOIN goods_category AS GoodsCategory1 ON GoodsCategory1.cat_id = GoodsBase.cat_id1

LEFT JOIN goods_category AS GoodsCategory2 ON GoodsCategory2.cat_id = GoodsBase.cat_id2

LEFT JOIN goods_category AS GoodsCategory3 ON GoodsCategory3.cat_id = GoodsBase.cat_id3

LEFT JOIN goods_unit AS GoodsUnit ON GoodsUnit.unit_id = GoodsBase.unit_id

LEFT JOIN seller_base AS SellerBase ON SellerBase.seller_id = GoodsBase.seller_id

LEFT JOIN goods_type_spec AS GoodsTypeSpec1 ON GoodsTypeSpec1.spec_id = GoodsSku.sku_spec1

LEFT JOIN goods_type_spec AS GoodsTypeSpec2 ON GoodsTypeSpec2.spec_id = GoodsSku.sku_spec2;

3813bce684dbaf2538d11c39c16e4739.png

然后可以根据这个来设置数据表的索引

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值