鍍金池/ 問(wèn)答/數(shù)據(jù)庫(kù)/ mysql如何提高視圖查詢速度?

mysql如何提高視圖查詢速度?

最近數(shù)據(jù)庫(kù)從5.5.18升級(jí)到了5.6.38,出現(xiàn)了一個(gè)問(wèn)題,有個(gè)視圖同樣的數(shù)據(jù)量執(zhí)行效率相比老數(shù)據(jù)庫(kù)慢了20倍,應(yīng)該怎么優(yōu)化?

如下是視圖sql:

SELECT
    `wz_demand`.`id` AS `id`,
    `wz_demand`.`operator` AS `operator`,
    `wz_member`.`username` AS `musername`,
    `wz_admin`.`truename` AS `truename`,
    `wz_demand`.`cid` AS `cid`,
    `wz_demand`.`title` AS `title`,
    `wz_demand`.`css` AS `css`,
    `wz_demand`.`thumb` AS `thumb`,
    `wz_demand`.`keywords` AS `keywords`,
    `wz_demand`.`remark` AS `remark`,
    `wz_demand`.`url` AS `url`,
    `wz_demand`.`status` AS `status`,
    `wz_demand`.`route` AS `route`,
    `wz_demand`.`publisher` AS `publisher`,
    `wz_demand`.`addtime` AS `addtime`,
    `wz_demand`.`updatetime` AS `updatetime`,
    `wz_demand`.`coin` AS `coin`,
    `wz_demand`.`template` AS `template`,
    `wz_demand`.`areaid` AS `areaid`,
    `wz_demand`.`areaid_1` AS `areaid_1`,
    `wz_demand`.`areaid_2` AS `areaid_2`,
    `wz_demand`.`sort` AS `sort`,
    `wz_demand`.`telephone` AS `telephone`,
    `wz_demand`.`address` AS `address`,
    `wz_demand`.`housecategory` AS `housecategory`,
    `wz_demand`.`renovation` AS `renovation`,
    `wz_demand`.`renovationcategory` AS `renovationcategory`,
    `wz_demand`.`housetype` AS `housetype`,
    `wz_demand`.`style` AS `style`,
    `wz_demand`.`area` AS `area`,
    `wz_demand`.`way` AS `way`,
    `wz_demand`.`budget` AS `budget`,
    `wz_demand`.`iscompany` AS `iscompany`,
    `wz_demand`.`leadtime` AS `leadtime`,
    `wz_demand`.`decorationtime` AS `decorationtime`,
    `wz_demand`.`source` AS `source`,
    `wz_demand`.`homestyle` AS `homestyle`,
    `wz_demand`.`content` AS `content`,
    `wz_demand`.`progress` AS `progress`,
    `wz_demand`.`progress1time` AS `progress1time`,
    `wz_demand`.`progress2time` AS `progress2time`,
    `wz_demand`.`progress3time` AS `progress3time`,
    `wz_demand`.`progress4time` AS `progress4time`,
    `wz_demand`.`order_no` AS `order_no`,
    `wz_demand`.`wait_comment` AS `wait_comment`,
    `wz_demand`.`referer` AS `referer`,
    `wz_demand`.`yxgsm` AS `yxgsm`,
    `wz_demand`.`orderplan` AS `orderplan`,
    `wz_demand`.`ispay` AS `ispay`,
    `wz_demand`.`uid` AS `uid`,
    `wz_demand`.`mobile` AS `mobile`,
    `wz_demand`.`sflf` AS `sflf`,
    `wz_demand`.`managerid` AS `managerid`,
    `wz_demand`.`managername` AS `managername`,
    `wz_demand`.`housekeeperid` AS `housekeeperid`,
    `wz_demand`.`housekeeper` AS `housekeeper`,
    `wz_demand`.`paystatus` AS `paystatus`,
    `wz_demand`.`orderstatus` AS `orderstatus`,
    `wz_demand`.`orderstep` AS `orderstep`,
    `wz_demand`.`nodeid` AS `nodeid`,
    `wz_demand`.`nodename` AS `nodename`,
    `wz_demand`.`outpaystaus` AS `outpaystaus`,
    `wz_demand`.`tj_name` AS `tj_name`,
    `wz_demand`.`designpay` AS `designpay`,
    `wz_demand`.`totalpay` AS `totalpay`,
    `wz_demand`.`designno` AS `designno`,
    `wz_demand`.`contactno` AS `contactno`,
    `wz_demand`.`extrapay` AS `extrapay`,
    `wz_demand`.`payforcompanystatus` AS `payforcompanystatus`,
    `wz_demand`.`ysclsd` AS `ysclsd`,
    `wz_demand`.`ysnm` AS `ysnm`,
    `wz_demand`.`ysclyq` AS `ysclyq`,
    `wz_demand`.`yssd` AS `yssd`,
    `wz_demand`.`ysclnm` AS `ysclnm`,
    `wz_demand`.`sdys` AS `sdys`,
    `wz_demand`.`paystype` AS `paystype`,
    `wz_demand`.`sign` AS `sign`,
    `wz_demand`.`getdate` AS `getdate`,
    `wz_demand`.`seriesnumber` AS `seriesnumber`,
    `wz_demand`.`logname` AS `logname`,
    `wz_demand`.`tj_tel` AS `tj_tel`,
    `wz_demand`.`domain` AS `domain`,
    `wz_demand`.`bao` AS `bao`,
    `wz_demand`.`ysyq` AS `ysyq`,
    `wz_demand`.`wrzl` AS `wrzl`,
    `wz_demand`.`kqzl` AS `kqzl`,
    `wz_demand`.`username` AS `username`,
    `wz_demand`.`applytype` AS `applytype`,
    `wz_demand`.`isApply` AS `isApply`,
    `wz_demand`.`name` AS `name`,
    `wz_demand`.`referrals` AS `referrals`,
    `wz_demand`.`referral` AS `referral`,
    `wz_demand`.`community` AS `community`,
    `wz_demand`.`companyname` AS `companyname`,
    `wz_demand`.`collection` AS `collection`,
    `wz_demand`.`three_no` AS `three_no`,
    `wz_demand`.`order_source` AS `order_source`,
    `wz_demand`.`wait_hf` AS `wait_hf`,
    `wz_demand`.`other` AS `other`,
    `wz_member`.`uid` AS `muid`,
    `wz_admin`.`uid` AS `auid`,
    `wz_demand`.`kfzy` AS `kfzy` 
FROM
    (
        (
            `wz_demand`
            LEFT JOIN `wz_member` ON ( ( `wz_demand`.`operator` = `wz_member`.`username` ) ) 
        )
    LEFT JOIN `wz_admin` ON ( ( `wz_member`.`uid` = `wz_admin`.`uid` ) ) 
    )

這里是5.6版本執(zhí)行時(shí)間和explain結(jié)果:
圖片描述

clipboard.png

這里是5.5版本執(zhí)行時(shí)間和explain結(jié)果:
clipboard.png
clipboard.png

回答
編輯回答
奧特蛋

看執(zhí)行計(jì)劃是一樣的,看不出問(wèn)題在哪里,建議按照按照下面的思路排查:
1、兩個(gè)環(huán)境都多執(zhí)行幾次,看平均時(shí)間,排查緩存影響。
2、升級(jí)后如果大部分sql都慢,可能是參數(shù)配置的問(wèn)題
3、嘗試重建username索引

2018年5月24日 12:10