1
SELECT *, `o_cheque_request.member_id`, `o_cheque_request.wallet_id`
FROM `o_cheque_request`, `o_member`, o_memberinfo`
WHERE `o_cheque_request.member_id` = `o_member.member_id`
AND `o_member.member_id` = `o_memberinfo.member_id`
AND withdraw_date >='2012-07-21'
AND `o_cheque_request.member_id`
IN (SELECT `member_id` FROM `o_cheque_request` GROUP BY `member_id` HAVING SUM(gross_amount ) <=10000)
GROUP BY `o_cheque_request.withdraw_date`, `o_cheque_request.member_id` ORDER BY `request_id` DESC

这需要大约 29 秒的时间 如何减少...使用连接...伙计们请帮帮我... o_cheque_request
request_id的表结构bigint(20) unsigned NOT NULL auto_increment,
wallet_idint(11) NOT NULL default '0',
member_idint(10) unsigned NOT NULL 默认 '0',
withdraw_datedate 默认 NULL,
amountint(10) unsigned NOT NULL 默认 '0',
gross_amountfloat(10,2) unsigned NOT NULL 默认 '0.00',
admin_chargefloat(10,2) unsigned NOT NULL 默认'0.00',
tdsfloat(10,2) unsigned NOT NULL 默认'0.00',
repurchasefloat(10,2) unsigned NOT NULL 默认'0.00',
net_amountfloat(10,2) unsigned NOT NULL 默认'0.00',
withdraw_typevarchar( 50) 默认 NULL,
bank_namevarchar(50) 默认 NULL,
cheque_novarchar(50) 默认 NULL,
courier_namevarchar(50) 默认为 NULL,
tracking_novarchar(50) 默认 NULL,
cheque_date日期默认 '0000-00-00',
PRIMARY KEY ( request_id),
KEY member_id( member_id)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=4738 ;

4

1 回答 1

0

试试这个

 SELECT * FROM (
        SELECT *, `o_cheque_request.member_id`, `o_cheque_request.wallet_id`
        FROM `o_cheque_request`
        JOIN `o_member` ON `o_cheque_request.member_id` = `o_member.member_id`
        JOIN `o_memberinfo` ON `o_member.member_id` = `o_memberinfo.member_id`
        WHERE withdraw_date >='2012-07-21'
        GROUP BY `o_cheque_request.member_id` HAVING SUM(`o_cheque_request.gross_amount` ) <=10000
    ) AS T
    GROUP BY `withdraw_date`, `member_id` ORDER BY `request_id` DESC
于 2015-02-03T06:33:01.313 回答