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

newid()による注文-どのように機能しますか?

    NewID()が何をするのか知っているので、ランダム選択にどのように役立つかを理解しようとしています。それは、(1)selectステートメントがmytableからすべてを選択し、(2)選択された各行に対して、NewID()によって生成された一意の識別子を追加し、(3)この一意の識別子で行を並べ替え、(4)並べ替えられたリストから上位100を選択するということですか? ?

    はい。これはほぼ正確です(ただし、必ずしもすべてを並べ替える必要はありません 行)。これは、実際の実行計画を確認することで確認できます。

    SELECT TOP 100 * 
    FROM master..spt_values 
    ORDER BY NEWID()
    

    スカラー計算演算子は、NEWID()を追加します 各行(私の例のクエリではテーブルの2506)の列がオンになっている場合、テーブルの行はこの列で並べ替えられ、上位100が選択されます。

    SQL Serverは、実際にはセット全体を位置100から下に並べ替える必要がないため、TOP Nを使用します。 ソート操作全体をメモリ内で実行しようとするソート演算子(Nの値が小さい場合) )



    1. SQL Serverを使用して、空のスペースをnull値に変換するにはどうすればよいですか?

    2. AndroidでJTDSドライバーを使用してSQLサーバーに接続する方法

    3. PHPとmySQL:2038年バグ:それは何ですか?それを解決する方法は?

    4. SQLServerのINSERTINTOSELECTクエリでの重複を避けてください