0

テーブルの詳細 -->

CREATE TABLE `redeem_vouchers` (
  `voucherid` int(11) NOT NULL,
  `voucheramount` decimal(18,2) DEFAULT NULL,
  `redeemedto` int(11) DEFAULT NULL,
  `redeemedon` datetime DEFAULT NULL,
  `transid` varchar(100) DEFAULT NULL,
  `paymentconfirmed` tinyint(1) NOT NULL DEFAULT '0',
  `confirmedby` int(11) DEFAULT NULL,
  `confirmedon` datetime DEFAULT NULL,
  `redeemedby` int(11) DEFAULT '0',
  PRIMARY KEY (`voucherid`),
  KEY `NewIndex2` (`redeemedto`),
  KEY `NewIndex3` (`voucheramount`),
  FULLTEXT KEY `NewIndex1` (`transid`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

クエリ-->

SELECT DISTINCT(transid),
    (SELECT (COUNT(voucheramount)*16) FROM redeem_vouchers WHERE transid = r.transid) AS  amount,
    (SELECT redeemedto FROM redeem_vouchers WHERE transid = r.transid LIMIT 0,1) AS 'Name' 
FROM 
    redeem_vouchers r 
WHERE 
    confirmedon 
BETWEEN ('2013-07-23 19:00:00') AND ('2013-07-24 19:00:00') 

テーブルには 4909 行しか含まれておらず、クエリは結果を返すのに 35 秒かかります。4 つのインデックスを追加しましたが、速度が向上しませんでした。私は危険なことをしていることを知っていますが、SQLは初めてです。私を助けてください。

4

1 に答える 1