1

ソートを高速化するためのいくつかのキーを持つ 320 万行があります。しかし、私のテーブルが大きくなるにつれて、物事は日に日に遅くなっていきます。私のクエリを見て、このプロセスをより迅速に行うために他に解決策があれば教えてください。

SELECT * FROM (SELECT `numbers` FROM `avotf`.`master` WHERE `active`=1 order by `monthly_mins`,`called`,`added`,rand() limit 200) AS T1 ORDER BY RAND() LIMIT 1
4

3 に答える 3

3

Assuming that your table has a numeric id column, something like this should work (borrowed from here):

SELECT * FROM `table` 
 WHERE id >= (SELECT FLOOR( MAX(id) * RAND()) FROM `table` ) ORDER BY id LIMIT 1;

Do not do this:

SELECT * FROM `table` ORDER BY RAND() LIMIT 1;

It works but it will be extremely slow

于 2013-04-26T14:25:45.033 に答える