でちょうどランド()を使用するよりも速く参加し使用していることはどのようにがどのようにMySQLの
SELECT * FROM `table` ORDER BY RAND() LIMIT 1
私が実際にトラブル最初の理解を持っていますより
SELECT t.id
FROM table t
JOIN (SELECT(FLOOR(max(id) * rand())) AS maxid FROM table)
AS tt
ON t.id >= tt.maxid
LIMIT 1
高速です。たぶん、私がなぜ他のものより速いのか分かっていれば、私はより良い理解を得るでしょう。
あなたがクエリにEXPLAIN使用しますが、基本的にはできDifficult MySQL self-join please explain
ありがとう! (私はMySQLコマンドの時間コストの要約をどこで見つけることができるか知っていますか?) – whamsicore
私はその情報も可能ではないと思います。 "EXPLAIN"コマンドと構文をチェックしてください。コマンドのコストは、システムがチェックする必要があるかどうかによって異なります。あなたがインデックスを持っていれば、それは速いです、あなたは完全なテーブルスキャンを行う必要がある場合、それは遅いです。まず、索引、結合(索引付き)および副問合せ/一時表を読んでください。次に、test-dbとEXPLAINコマンドで遊んでください。 – Nanne