
ビューにて下記のように設定し「SQLの実行」は指定通りソート
されましたが、「ビューを開く」では、ソートされずテーブルの
並びのままでした。
SELECT TOP (100) PERCENT 端末コード, 端末番号
FROM dbo.T_端末
ORDER BY 端末コード
そこで、下記のように設定を変更したところ「ビューを開く」でも
ソートされるようになりました。
SELECT TOP (1000) 端末コード, 端末番号
FROM dbo.T_端末
ORDER BY 端末コード
TOP (件数) に全データ数以上を指定すれば機能するのは解りますが
「ビュー」とはそんな使い方なのでしょうか?
No.2ベストアンサー
- 回答日時:
ビューを単純に照会したときにORDER句を切らなくても希望する並び順でSELECTできれば、運用上は便利なことが多いです。
そのため、SQL Serverでは昔からTipsでTOP 100 PERCENTで並び替える方法が認識されていました。
(Tipsとある通り、普通はViewの外でOrder切ります)
ただし、SQL Server 2005になって、TOP 100 PERCENTは「並び替えの必要なし」とオプティマイザが判断するように仕様が変更されてしまいました。そのため、SQL Server 2005ではTOP 100 PERCENT句をViewに切っても並び替えは起こりません。
それだけなら分かりやすいのですが、やはりこの技を使っていた人が多かったためでしょうか。SP2の後の累積パッチ「SP2の累積プログラムその2」でこれを修正するモジュールが提供されています。
SP2には入っていないし、わざわざ当てる人も少ないと思うので、次のSP3が出たとして、それ当てた時からTOP 100 PERCENTが効くようになるでしょう。
ちなみにSQL Server 2008でも初期バージョンではTOP 100 PERCENTが効かず、累積パッチが提供されています。
ということで、そのようなビューの使い方は正しいアプローチではありませんが、SQL Serverの裏ワザの一つですと認識ください。
この数日悶々としていましたが、スッキリしました。
本当にありがとうございます。
ACCESSのMDBからADP+SQLに変えようとしているのですが・・・
このビューを表示させる(並び替える)のに、SELECTを使うとビューの
SELECTと合わせて二回のSELECTをサーバー側とクライアント側で
一回ずつ実行する訳ですよね?
効率が悪い様な気がして一回で済ませようと考えています。
そんな事はないのでしょうか?
(今は数は増えるかもしれませんが、基本的にビュー側でSELECTして、
ACCESS側はそのクエリーを表示させるように作ろうと考えています)
ビューだけでなく関数も同様ですのでパッチをあてたいのですが、
SP2の後の累積パッチ「SP2の累積プログラムその2」を見つける事が
出来ません、所在を教えて頂けると助かります。
No.4
- 回答日時:
>
http://support.microsoft.com/kb/936305/↑の先頭にある「修正プログラムのダウンロード」だと
64bitの環境しかありません、32bitのパッチは何処にあるのでしょうか?
これは気づきませんでした。32bit版だけ提供を打ち切っているのですね。その場合は累積プログラム3以降を使えばよいです。
http://support.microsoft.com/kb/939537/
ちなみに累積プログラムは文字通りそれまでのパッチが含まれます。
(すでに累積プログラムは9まで出ています)
>ビューは細工をせずに使い、細工する場合はテーブル値関数を使った方がいいと言うことでしょうか?
基本的にはその通りです。もし極力すべて(抽出も並び替えも)をサーバ側のオブジェクトに含めて処理してしまい、Accessは表示に徹するという考えなら、むしろストアドプロシージャを使う方がよいと思います(TOP 100 PERCENTをあてにする必要もなくなりますし)。
まあ、adpとの相性やそれ以外の使い勝手もあるでしょうから一概にはいえませんが。まあいろいろ試してみてください。
深夜の回答ありがとうございました。
結果を報告しますと、2をDLしてインストールしようとしたのですが、
更新する項目にチェックが入れられず、結局9をDLしてインストール
しました。
しかし、改善はされませんでした。
あれこれ変なパッチをあてようとしたのが原因だと思います。
現在は180日の評価版を使っていますので、サーバーを導入する時は
この辺を注意して作業します。
ビューについては教えていただいた方法で検討する事にします。
本当にありがとうございました、今後も質問することが多々あると思いますが、
何卒よろしくお願いします。
No.3
- 回答日時:
ビューの中にORDERを切ると、そのビューを照会するたびにORDERが実行されますので、基本的には非効率です。
たとえば、毎回Accessで抽出するデータは数十件なのに、テーブルには数万件のデータが入っているケースを考えてみてください。
テーブル関数ならば結果を絞って返すこともできますが、ビューの場合は本来なら数十件の並べ替えで済むところを、データベース側で毎回数万件の並べ替えを行うことになりかねません。
従って、常に全件近く戻す場合を除いてはビューの中にはORDERを切らない方がいいと思いますよ。
なお、累積プログラム2は以下です。
http://support.microsoft.com/kb/936305/
累積プログラムはSPに含まれるまでは、基本的に自己責任で当てると思った方がよいです。十分確認してからの適用をお勧めします。
何度も回答いただきありがとうございます。
あっちこっち探したのですがスキル不足で見つかりませんでした。
http://support.microsoft.com/kb/936305/
↑の先頭にある「修正プログラムのダウンロード」だと
64bitの環境しかありません、32bitのパッチは何処にあるのでしょうか?
> ビューを照会するたびにORDERが実行されますので非効率です。
ビューは細工をせずに使い、細工する場合はテーブル値関数を
使った方がいいと言うことでしょうか?
(イマイチビューと関数の使い分けが理解できておりません)
No.1
- 回答日時:
>「ビュー」とはそんな使い方なのでしょうか?
の意図するところはよくわかりませんが..
ビューを使用する目的としては、
セキュリティ上、全データでは無く一部のデータを見せるために使用するのが一般的ではないかと思います。(元のテーブルはセキュリティで制限して直接見えない様にして、ビューだけを見せる様にする)
または
よく使用する条件でビューを作成して使用する。
質問の例の、 TOP (100) PERCENT は意味が無いですね。
TOP句は書く必要がありません。
二つ目は、端末コードの若い順に1000行を選択する意味になります。
この回答への補足
ありがとうございます。 もう少し教えて下さい。
> TOP (100) PERCENT は意味が無いですね。
ORDER句があるとTOP句は自動で付与されてしまいます。
(本を読むと「ビュー」ではTOP句が無いときはORDER句も
指定できないからだと思います)
ただ、TOP (100) PERCENT だと並び替えされないのです。
「ビュー」で全件表示でソートするには最大件数以上の行数を
指定しないとソートできないのでしょうか?
TOP (100) PERCENT・・・並び替えしない
TOP (1000)・・・並び替わる
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Android(アンドロイド) auのAndroid端末のSIMカードがロックされてしまいました。 6 2022/08/22 20:31
- iCloud iPhone端末変更時のLINE引継ぎ 4 2023/07/09 15:07
- その他(スマートフォン・携帯電話・VR) ライフベアのことで知りたいことがあります。 旧Android端末にインストールしていたので、引き継ぎ 2 2023/05/07 21:19
- Bluetooth・テザリング android(Galaxy S-22)、bluetoothの「この端末名」がコロコロ変わる 1 2022/12/17 13:15
- その他(スマートフォン・携帯電話・VR) 生成AIの回答は本当ですか? 新スマホにINEデータを引継ぎには? 2 2023/08/18 06:43
- docomo(ドコモ) ドコモのオンライン購入、開通が先?初期設定が先? 2 2022/10/19 03:01
- 格安スマホ・SIMフリースマホ 端末設定画面とアプリのデータ使用量の誤差について 4 2023/04/12 18:02
- Android(アンドロイド) 見にくくてすみません。下の画像中央あたりの緑のバーの右端に、逆三角形の場所があるのですが、これを押す 1 2023/01/27 05:52
- 格安スマホ・SIMフリースマホ 楽天ハンド MNPして対応してる端末に変えたら esimでなくても使えますよね? 1 2022/08/05 22:10
- iPhone(アイフォーン) 現在iPhone7の4Gでデータ量5Gを2台で分け合っております。私だけオンライン新規で新しいiPh 3 2022/10/13 16:05
このQ&Aを見た人はこんなQ&Aも見ています
-
Viewにインデックスは張れますか?
Oracle
-
ビューで引数を使いたい
SQL Server
-
view作成時にデータ型を変更したい(SQLServer2000)
SQL Server
-
-
4
SqlServer2012 ビューとクエリ
SQL Server
-
5
SQLServerで文字列の末尾からある位置で取出
SQL Server
-
6
GROUP BYを行った後に結合したい。
Oracle
-
7
SQLServerのselect文でデータ数1万くらいのDBから
SQL Server
-
8
ビューにインデックスを設定できませんか?
SQL Server
-
9
日付型のフィールドに空白を入れる方法を教えてください
その他(データベース)
-
10
Access2000、これはいったい・・・・
その他(データベース)
-
11
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
12
ユーザー定義関数内でのsp_executesqlプロシージャの使用
SQL Server
-
13
SQLで特定の項目の重複のみを排除した全項目を取得する方法
その他(プログラミング・Web制作)
-
14
「指定されたキャストは有効ではありません。」とエラーが出てしまいます。
Microsoft ASP
-
15
FROM の中で CASE を使えるでしょうか
SQL Server
-
16
mdfファイルの残骸について
SQL Server
-
17
復旧中のデータベースについて
SQL Server
-
18
VIEWでテーブルの集計結果を表示したいです
SQL Server
-
19
データベース関係で、データの洗い替えとはどのような事を行うことでしょう
IT・エンジニアリング
-
20
バッチでCSVを処理する時、空の項目があった場合
その他(プログラミング・Web制作)
関連するカテゴリからQ&Aを探す
今、見られている記事はコレ!
-
弁護士が語る「合法と違法を分けるオンラインカジノのシンプルな線引き」
「お金を賭けたら違法です」ーーこう答えたのは富士見坂法律事務所の井上義之弁護士。オンラインカジノが違法となるかどうかの基準は、このように非常にシンプルである。しかし2025年にはいって、違法賭博事件が相次...
-
釣りと密漁の違いは?知らなかったでは済まされない?事前にできることは?
知らなかったでは済まされないのが法律の世界であるが、全てを知ってから何かをするには少々手間がかかるし、最悪始めることすらできずに終わってしまうこともあり得る。教えてgooでも「釣りと密漁の境目はどこです...
-
カスハラとクレームの違いは?カスハラの法的責任は?企業がとるべき対応は?
東京都が、客からの迷惑行為などを称した「カスタマーハラスメント」、いわゆる「カスハラ」の防止を目的とした条例を、全国で初めて成立させた。条例に罰則はなく、2025年4月1日から施行される。 この動きは自治体...
-
なぜ批判コメントをするの?その心理と向き合い方をカウンセラーにきいた!
今や生活に必要不可欠となったインターネット。手軽に情報を得られるだけでなく、ネットを介したコミュニケーションも一般的となった。それと同時に顕在化しているのが、他者に対する辛らつな意見だ。ネットニュース...
-
大麻の使用罪がなかった理由や法改正での変更点、他国との違いを弁護士が解説
ドイツで2024年4月に大麻が合法化され、その2ヶ月後にサッカーEURO2024が行われた。その際、ドイツ警察は大会運営における治安維持の一つの方針として「アルコールを飲んでいるグループと、大麻を吸っているグループ...
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Accessでデータシートに同じデ...
-
このISAMでは、リンクテーブル・・
-
マテリアライズドビューとスナ...
-
Accessでの稼働日数計算の方法
-
アクセス レコードセットを更...
-
テーブルで一番古いレコードだ...
-
Access昇順レコードを、5分割...
-
VBAでSQLServerへのODBC接続
-
1つのSQL文で文字列を置換する...
-
ビューのソートについて
-
テーブル作成時の行数の設定
-
SQLでの前検索・後検索
-
PostgreSQLでテーブル構成を変える
-
Access VBAからエクセルに出力...
-
MySQLの容量の削減の仕方
-
テーブルの設計はとりあえず文...
-
住所のDBテーブル、マスターの...
-
Excel→Access→Oracleでインポー...
-
MYSQLでコード番号を自動でつけ...
-
access 特定のレコード数までエ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Accessでデータシートに同じデ...
-
Oracleで上書きImportはできま...
-
ビューのソートについて
-
Accessのテーブルデータを一気...
-
テーブルで一番古いレコードだ...
-
アクセス レコードセットを更...
-
マテリアライズドビューとスナ...
-
ORA-01401が表示され、データが...
-
このISAMでは、リンクテーブル・・
-
accessでレコード更新直後の反...
-
結合テーブルでINSERTする方法...
-
ERROR1062:Duplicate entry.......
-
IF NOT EXISTを使用するINSERT文
-
削除したテーブルを元に戻すこ...
-
「クリップボードにコピーされ...
-
left joinなどで結合対象のレコ...
-
ACCESS2010の最適化が中断される
-
ODBC接続で新しいレコードを追...
-
構文エラー : 演算子がありませ...
-
処理の途中で停止させ、再開さ...
おすすめ情報