テーブルがあります:
create table ducks (id int(8) primary key not null auto_increment,
name varchar(255),
car varchar(255),
money int(8)
);
insert into ducks set name='donald', car='none', money=10;
insert into ducks set name='scrudge', car='bip', money=10000;
insert into ducks set name='mac', car='bip', money=1000;
insert into ducks set name='joe', car='boo', money=2000000;
これを分析すると、次のリクエストでクエリが遅いことがわかりました。
select name,money from ducks where car='bip' order by money DESC LIMIT 1;
テーブルが大きく、1 つのレコードを取得するためだけにソートすると非常に長いため
私は、以下がより速く動作することを発見しました:
select distinct name,money from ducks where money=(select max(money) from ducks where car='bip') LIMIT 1;
しかし、それはサブセレクトであるため、まだわかりません。
これを解決する一般的な方法は何ですか?
http://sqlfiddle.com/#!2/d2b7ed/6
更新すると、実際には同じ車を検索するのではなく、100000ドル未満の最も裕福なアヒルを検索するタスクがあることがわかりました