perf mysql_选择mysql查询的Perf非常糟糕

我不确定为什么这个查询需要4分钟才能完成:

SELECT

su.sid,u.uid,u.display_name,u.locale

FROM user u

LEFT JOIN subscription_user su ON su.uid = u.uid

ORDER BY u.display_name DESC

LIMIT 0,25;

嗯,我知道这是由于订单,删除它,它非常快.如果我改为使用INNER JOIN而不是快速但问题不是所有用户都可能在subscription_user表中.

CREATE TABLE `user` (

`uid` int(11) NOT NULL AUTO_INCREMENT,

`password` varchar(100) DEFAULT NULL,

`user_type` varchar(10) NOT NULL DEFAULT 'user',

`display_name` varchar(50) NOT NULL,

`email` varchar(100) NOT NULL,

`locale` varchar(8) DEFAULT 'en',

`last_login` datetime DEFAULT NULL,

`auth_type` varchar(10) DEFAULT NULL,

`auth_data` varchar(500) DEFAULT NULL,

`inactive` tinyint(4) NOT NULL DEFAULT '0',

`receive_email` tinyint(4) NOT NULL DEFAULT '1',

`stateid` int(10) DEFAULT NULL,

`owner_group_id` int(11) DEFAULT NULL,

`signature` varchar(500) DEFAULT NULL,

`raw_signature` varchar(500) DEFAULT NULL,

`round_robin` smallint(5) unsigned NOT NULL DEFAULT '0',

PRIMARY KEY (`uid`),

UNIQUE KEY `email` (`email`),

KEY `stateid` (`stateid`) USING BTREE,

KEY `user_type` (`user_type`) USING BTREE,

KEY `name` (`display_name`)

) ENGINE=InnoDB AUTO_INCREMENT=28343 DEFAULT CHARSET=latin1;

CREATE TABLE `subscription_user` (

`sid` varchar(50) NOT NULL,

`uid` int(11) NOT NULL,

`deleted` tinyint(4) NOT NULL DEFAULT '0',

`forum_user` varchar(50) NOT NULL,

PRIMARY KEY (`sid`,`uid`)

) ENGINE=InnoDB DEFAULT CHARSET=latin1;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值