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) 符号なし NOT NULL デフォルト '0.00'、
repurchasefloat(10,2) 符号なし NOT NULL デフォルト '0.00'、
net_amountfloat(10,2) 符号なし 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 に答える