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

SQL Serverテーブルにランダムな値を挿入するにはどうすればよいですか?

    クエリエンジンがこれを確認すると...

    (SELECT TOP 1 [val] FROM @randomStuff ORDER BY NEWID())
    

    ...それはすべて、「ああ、キャッシュ可能なスカラーサブクエリです。キャッシュします!」のようなものです。

    クエリエンジンをだまして、キャッシュできないと思わせる必要があります。 jfarの回答 は近かったが、クエリエンジンは、MyTable.MyColumn = MyTable.MyColumnのトータロジーを確認するのに十分なほどスマートでした。 、しかし、これを透視するほど賢くはありません。

    UPDATE MyTable
       SET MyColumn = (SELECT TOP 1 val
                         FROM @randomStuff r
                              INNER JOIN MyTable _MT
                                      ON M.Id = _MT.Id
                        ORDER BY NEWID())
     FROM MyTable M
    

    外部テーブル(MT)をサブクエリに取り込むことにより、クエリエンジンは、サブクエリを再評価する必要があると想定します。何でも実際に機能しますが、MyTable.Idの(想定される)主キーを使用しました。これは、インデックスが作成され、オーバーヘッドがほとんど追加されないためです。

    カーソルはおそらく同じくらい速いでしょうが、確かにそれほど楽しくはありません。



    1. mysql、utf-8列:大文字と小文字のみを選択する方法は?

    2. PythonmySQL-引用符のエスケープ

    3. Oracleデータベースとのエンティティフレームワーク接続

    4. DUP_VAL_ON_INDEXをトリガーする値をキャプチャします