[解決済み] なぜSelect Top 100 Percentを使用するのですか?
2023-04-15 05:31:37
質問
私は
SQL Server 2005
では、ビュー定義で order by を使用できるように SQL Server をトリックすることができました。
TOP 100 PERCENT
を含めることで、ビューの定義で順序を使用できるようにすることができます。
SELECT
節に記述しています。しかし、私が受け継いだ他のコードでは
SELECT TOP 100 PERCENT
... 動的SQL文の中で(
ADO
で
ASP.NET
アプリなど)。これには何か理由があるのでしょうか?と同じ結果になるのではありませんか?
ではなく
を含む
TOP 100 PERCENT
?
どのように解決するのですか?
"に使用されました。 中間実体化(Google検索) "です。
良い記事です。 アダム・マハニック:中間実体化の秘密を探る
彼はさらに MS Connect を立ち上げたので、よりクリーンな方法で行うことができます。
私の見解は "本質的に悪いものではない" ですが、100% 確実でない限り使わないでください。問題は、それを行う時点でのみ機能し、おそらくそれ以降は機能しないことです (パッチ レベル、スキーマ、インデックス、行数など)...。
動作確認済み例
これは、どの順番で評価されるのかが分からないため、失敗する可能性があります。
SELECT foo From MyTable WHERE ISNUMERIC (foo) = 1 AND CAST(foo AS int) > 100
また、これも失敗する可能性があるのは
SELECT foo
FROM
(SELECT foo From MyTable WHERE ISNUMERIC (foo) = 1) bar
WHERE
CAST(foo AS int) > 100
しかし、これはSQL Server 2000ではありませんでした。内部のクエリは評価され、スプールされます。
SELECT foo
FROM
(SELECT TOP 100 PERCENT foo From MyTable WHERE ISNUMERIC (foo) = 1 ORDER BY foo) bar
WHERE
CAST(foo AS int) > 100
注:これは SQL Server 2005 でも動作します。
SELECT TOP 2000000000 ... ORDER BY...
関連
-
[解決済み] どのように私は、SQL Serverの上位100レコードを更新することができます。
-
MySQL - ストアドプロシージャ (データ型、関数)
-
[解決済み] あるテーブルから、別のテーブルに存在しないすべてのレコードを選択するにはどうすればよいですか?
-
[解決済み] SQL ServerでSELECTからUPDATEする方法とは?
-
[解決済み] 各GROUP BYグループの最初の行を選択しますか?
-
[解決済み] SQLのSELECTでIF...THENを実行するにはどうすればよいですか?
-
[解決済み] ...値に挿入する ( SELECT ... FROM ... )
-
[解決済み] INNER JOINよりもCROSS APPLYを使用すべきなのはどのような場合ですか?
-
[解決済み] T-SQLでnot equalには!=と<>のどちらを使うべきですか?
-
[解決済み] 各グループの上位1行を取得
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
解決策:ユーザー root で localhost:3306 にある MySQL に接続できませんでした。
-
[解決済み] SQLの結合形式 - 入れ子になった内側join
-
[解決済み] SQL Serverで実行中の合計を計算する
-
[解決済み] 1つのPostgreSQLクエリで複数のWITHステートメントを使用するには?
-
[解決済み] SQL SELECT WHERE フィールドに単語が含まれる場合
-
[解決済み] NOT IN vs NOT EXISTS
-
[解決済み] SQLでランダムな行を要求する方法は?
-
[解決済み] Count()で条件を指定することは可能ですか?
-
[解決済み] "ON UPDATE CASCADE "を使用する場合について
-
[解決済み] VARCHARとCHARの違いは何ですか?