問題タブ [newid]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
sql - ORDER BY NEWID() を適用してランダムにフェッチするときにレコードの重複を防ぐ方法は?
クエリでランダムなレコードを取得するために、ランダムな順序で行を返すで提供されているソリューションを使用してみました。しかしNEWID()
、フェッチしたい列のリストに追加する必要があります。そうしないと、追加できませんORDER BY NEWID()
。残念ながら、結果セットに重複したレコードが含まれるようになります。
より明確にするために、このクエリでは、要求された列に NEWID() が存在するため、結果が重複します。
一意のレコードを取得しないというこの問題を解決するにはどうすればよいですか (ここでは BookID は PK です)。
sql - like ステートメントでランダムな行を取得する (500 万行以上)
私は2つのテーブルを持つDBを持っています自動インクリメント 1,1 tiny int)、Name、Url (プロバイダ + ビデオ ID を使用してリンクを構築するため)
YouTube とは異なり、小規模なプロバイダーには、配列を返し、ランダムなものを取得する API がありません。
私が今得た両方の方法で、完全にランダムな行を取得するのに1秒もかかりません:
また
少し長い
しかし、より具体的なものを探し始めると:
クエリは 8 秒に達し、最後のものやtblVideos などを削除すると 4 ~ 5 秒に短縮されますが、それは長すぎます。
「order by newid()」を使用せずにクエリ全体を取得すると、クエリにかかる時間が大幅に短縮されますが、アプリケーションはユーザーごとに約 0.2 ~ 2 MB のデータを消費します。データ
sql - NewID() の処理に時間がかかる
200 万以上のレコードを持つテーブルに対して以下のコードを実行していますが、NewID() の実行に時間がかかります。
クエリを高速化する別の方法を提案できますか?
sql-server - 400 万件のレコードを持つ既存のテーブルで newsequentialid() に変更する
私の質問は、既存のテーブルで newid() を newsequentialid() に変更するのとほぼ同じです
インデックスをよりコンパクトにする必要があるよりも newsequentialid() に変更すると、正しいですか? また、新しいレコードを挿入しているときに、シーケンスが既存の ID にヒットした場合はどうなりますか? データベースは前にそれをチェックしますか?
sql-server-2008 - 固有のものを失うことなく NEWID() を使用しますか?
(設計が不適切な) SQL データベースから新しいデータ抽出を作成しようとしています。顧客は、NEWID() 関数を使用して実行しようとしている個別の識別子を追加することを要求しています。残念ながら、これにより複数の重複レコードが返されます。
少し調査した結果、NEWID() 関数は実際に、distinct キーワードの使用を「元に戻す」ことがわかりましたが、これを克服する理由や方法がわかりません。
私が書こうとしているクエリの例は次のとおりです。
選択ブロックの NEWID() 行を見逃した場合、569 件のレコードが返されますが、これは正しいのですが、その行を含めると 30,000 件を超えてしまい、元の 569 件とすべて重複していますが、ID が異なります。誰でもこの問題を回避する方法を提案できますか?
前もって感謝します