sql >> データベース >  >> RDS >> Mysql

ORDER BY RAND()代替

    ID列がある場合は、次のことを行うことをお勧めします:

    -- create a variable to hold the random number
    SET @rownum := SELECT count(*) FROM table;
    SET @row := (SELECT CEIL((rand() * @rownum));
    
    -- use the random number to select on the id column
    SELECT * from tablle WHERE id = @row;
    

    ランダムID番号を選択するロジックは、アプリケーションレベルに移動できます。

    SELECT * FROM table ORDER BY RAND LIMIT 40
    

    MySQLはテーブル内のすべてのレコードを処理して、すべての行に対して全表スキャンを実行し、それらをランダムに並べ替えるため、非常に非効率的です。



    1. MySQLストアドプロシージャで一時テーブルを作成する

    2. Pythonのmysqlでプリペアドステートメントを使用する

    3. MySQL8はパスワードが機能しない新しいユーザーを作成します

    4. mysql for python2.7はPythonv2.7が見つからないと言っています