Microsoft SQL Server 総合スレ 11 [無断転載禁止]©2ch.net

1NAME IS NULL2016/05/29(日) 16:50:08.13ID:dqKJQypQ
Microsoft SQL Server (Transact-SQL) の総合スレッドです。

・Microsoft 公式サイト
http://www.microsoft.com/japan/sql/

過去スレとかめんどいから誰か適当に貼って

674NAME IS NULL2018/02/13(火) 20:13:55.26ID:0W+Ckc+y
久しぶりにアツいマウント合戦開幕したなw
どっちも負けろwwww

675NAME IS NULL2018/02/13(火) 21:30:57.57ID:0W+Ckc+y
どした?おい?w
ファイッッッ!!!wwwwww

676NAME IS NULL2018/02/13(火) 21:40:47.70ID:???
SQL SERVER2014Expressが動いているWindowsサーバーのOSをクリーンインストール
する予定なのですが、データベースを丸ごとバックアップしておいて、あとで戻すなどは
可能ですか?ヒントを教えて下さい。DBのサイズは500MB 程度です。

677NAME IS NULL2018/02/13(火) 22:07:12.29ID:???
>>676
データベースのデタッチとアタッチ

678NAME IS NULL2018/02/13(火) 23:35:26.82ID:???
リンクサーバー設定とかデータベースの設定とかもバックアップする方法ってないものか
ドライブごとバックアップするしかないのかな

679NAME IS NULL2018/02/14(水) 00:04:57.46ID:???
masterバックアップして戻せば戻ったような

680NAME IS NULL2018/02/14(水) 02:50:36.19ID:kUpzGWTP
>>673
根本的にリレーショナルデータベースを分かってないのになぜ知ったかぶりをするのか?

リレーショナルデータベースは重い処理をしてるんだぞ?

リレーショナルデータベースの内部処理が見えないから、自分のしょぼいプログラムと比較にならないことをしていることに気づかない。

681NAME IS NULL2018/02/14(水) 02:53:40.84ID:kUpzGWTP
>>673
そもそもあんたの用語がおかしい。データベースを知らないと思う。データベースを使うのが精一杯で、リレーショナルデータベースの構造も知らないと思われる。

クエリキャッシュなんて言葉はデータベースエンジニアは使わない。

682NAME IS NULL2018/02/14(水) 03:07:54.32ID:kUpzGWTP
>>673
同じ結果でもいつも速いわけではない。統計情報の取得タイミング、データの傾向の変化で実行プランが最適にならない可能性もあれば、コストが高くても速いこともある。

バッファキャッシュの有無、データファイル読み書きタイミング、速度、OSのキャッシュ、ストレージのキャッシュ、ありとあらゆる条件で性能は決まるのであって、そのなかからどう処理されているかのSQL Serverの情報を元にSQL Serverが言っている処理情報の誤りまで判断して決めることだ。

683NAME IS NULL2018/02/14(水) 07:51:44.92ID:???
定期的にわくよね。当たり前の一般論をすごいことのように語るID付いてるおっさん。

684NAME IS NULL2018/02/14(水) 07:55:04.82ID:???
>>682
すごいね。疲れない?

685NAME IS NULL2018/02/14(水) 10:24:40.03ID:4BYcg5RC
>>677
ありがとうございました。やってみます。

686NAME IS NULL2018/02/14(水) 17:50:15.79ID:gGA+OaqX
【2.14】   環 境 破 壊 の 日   ≪バレンタインデーは必要?≫  チョコを配るって何  【CO2】
http://rosie.5ch.net/test/read.cgi/liveplus/1518571383/l50

687NAME IS NULL2018/02/14(水) 18:45:38.91ID:???
>>679
知らなかった。今度からmaster もバックアップする

688NAME IS NULL2018/02/14(水) 20:48:54.39ID:???
masterリストアするのは簡単じゃないから、再生成するスクリプト作って流すほうが楽かもよ

689NAME IS NULL2018/02/15(木) 18:22:36.56ID:YBD93ntd
質問です。
顧客テーブルと売上テーブルがあり、顧客IDで紐付いています。
特定の条件の売上が無い(売上テーブルにレコードが存在しない)顧客のみを抽出するには、どのような方法が考えられるでしょうか?

仮テーブルに顧客テーブルの全レコードをコピーし「特定の条件の売上が有る」顧客を削除していく、という方法は思いつきましたが、SQL文のみで実現する方法はあるでしょうか?

無いものは抽出できない、とは思うのですが…

690NAME IS NULL2018/02/15(木) 18:56:53.86ID:???
>>689
LEFT JOIN

スレチじゃね?

691NAME IS NULL2018/02/15(木) 19:10:24.66ID:L39WhMJw
>>689
自ら吐いた言霊に呪われとるやんw

無いのは売上
抽出するのは顧客

な?

692NAME IS NULL2018/02/15(木) 21:10:45.04ID:???
SELECT * FROM 顧客テーブル
WHERE NOT 顧客ID IN (SELECT 顧客ID FROM 売上テーブル)

みたいな風かな

693NAME IS NULL2018/02/15(木) 21:23:39.60ID:???
>>692
そういうINの使い方は悪手だよ
NOT EXISTSかLEFT JOINを使おう

694NAME IS NULL2018/02/15(木) 21:23:57.09ID:???
>>689
>>690で答え出てるけどないものを抽出するんじゃなくて、「売上に紐付かない顧客」を抽出するってこと

695NAME IS NULL2018/02/15(木) 21:31:33.97ID:???
>>694
そういうJOINの使い方は悪手だよ
NOT EXISTSを使おう

696NAME IS NULL2018/02/15(木) 21:40:30.01ID:???
exists は確かにわかりやすい記述だけど遅い
大量のデータで使うとサーバーが唸る
できるならinner joinでやったほうがいい
http://kkoudev.github.io/blog/2013/09/14/sql/

697NAME IS NULL2018/02/15(木) 23:18:27.60ID:???
>>696
NOT EXISTSをINNER JOINにするのは無理だし
MySQLはNested Loopしか使えないからね
他の一般的RDBとは事情が違うよ

698NAME IS NULL2018/02/15(木) 23:21:53.94ID:???
>>695
NOT EXISTSのほうがパフォーマンスいいことのほうが多いけど
LEFT JOINが悪手ってわけでもないと思うけどな

少なくとも質問者はLEFT JOINを理解してない風なので
そっちからはじめたほうがいい

6996892018/02/16(金) 00:03:31.60ID:???
みなさまありがとうございます。
LEFT JOINでできるとは思いませんでした…頭が硬いですね。
教えていただいたNOT EXISTSも調べたところまさにやりたいことでした。
何とかなりそうです。
ありがとうございました。

700NAME IS NULL2018/02/16(金) 00:31:27.89ID:???
>>695
環境、データ、インデックスとかによって違うからお前さんみたいに盲信してるのが一番ヤバイ

701NAME IS NULL2018/02/16(金) 01:49:40.19ID:nepixz1J
経験上LEFT JOIN でIS NULLのほうが速い場合がほとんど

702NAME IS NULL2018/02/16(金) 02:02:09.86ID:???
パフォーマンス気にするなら計測すればいい
>>700の言うように状況によって結果は変わる
https://sqlperformance.com/2012/12/t-sql-queries/left-anti-semi-join

703NAME IS NULL2018/02/16(金) 05:41:07.18ID:???
>>692さんみたいな書き方を良くするんですが、これは遅いのですか?

704NAME IS NULL2018/02/16(金) 05:43:00.22ID:???
あっ、ただ自分の場合は

「WHERE NOT 顧客ID IN (SELECT 顧客ID FROM 売上テーブル)」

ではなく

「WHERE 顧客ID NOT IN (SELECT 顧客ID FROM 売上テーブル)」

と書きます。

705NAME IS NULL2018/02/16(金) 10:17:03.78ID:???
売上げテーブルに顧客IDでインデックス貼ってあればそんなに遅くない気もする

706NAME IS NULL2018/02/16(金) 10:51:09.70ID:???
692は自分だけど、後でみなさん言われるとおり

SELECT * FROM 顧客テーブル
WHERE NOT EXISTS (SELECT TOP 1 FROM 売上テーブル WHERE 顧客ID=顧客テーブル.顧客ID)

のほうが速そうだな

707NAME IS NULL2018/02/16(金) 12:21:10.95ID:???
速いとか遅いとか気にしたいんならDBが適切にメンテされているかを考えるべきやな
SQLの表記のゆれなど考えるだけ無意味

708NAME IS NULL2018/02/16(金) 15:52:24.98ID:???
NOT INの場合はパフォーマンス以前に
顧客IDがNOT NULLじゃないと意図した結果が得られない可能性がある

NOT NULLなら意図した結果が得られるけど、速度はDBの最適化に依存
INの最適化レベルが高いDBならNOT EXISTSと同程度の速度に場合もある
でもそうならない場合もあるからこういうケースでは基本使わない

709NAME IS NULL2018/02/16(金) 16:42:30.61ID:G4Vvw6Lg
【アマルガム】水銀を歯に? 厚労省『暴動が怖い』
http://mao.5ch.net/test/read.cgi/doctor/1517058870/l50
【ペットフード】告発したら3人組に棍棒で襲われた
http://egg.5ch.net/test/read.cgi/hosp/1517110484/l50
【マンモグラフィー】おっぱい挟んで癌検査…必要?
http://egg.5ch.net/test/read.cgi/bio/1517115639/l50

710NAME IS NULL2018/02/16(金) 20:39:05.84ID:yNJxj2Lb
>>700
環境、データ、インデックスとかによって違うからお前さんみたいに
テストした環境でLEFT JOINが速いからLEFT JOINにしてしまう奴が一番ヤバイ

711NAME IS NULL2018/02/16(金) 20:59:00.37ID:???
>>710
うまい返ししたつもりなんだろうけどアホ晒してるだけやぞww

712NAME IS NULL2018/02/16(金) 21:08:47.07ID:yNJxj2Lb
>>711
普通に答えただけだけどうまかったか?w
マジかwセンスあんな俺www

713NAME IS NULL2018/02/16(金) 21:32:20.04ID:???
誰か試してみてよ

714NAME IS NULL2018/02/16(金) 21:53:09.91ID:???
単純なnot inならouter joinと同じ実行計画吐いたきがする

715NAME IS NULL2018/02/16(金) 22:16:06.50ID:yNJxj2Lb
>>714
だからたまたまその時その環境でそういう実行プランが作られたという経験を
後生大事に今生の知識として胸にしまいこんでも無駄だと言っておろうが

SQLはいつだってよりシンプルにより直接的にやりたい事を表現してる様に書くべきなんや

716NAME IS NULL2018/02/16(金) 23:37:28.84ID:???
>>712
誰もうまい返しとは言ってないぞ
日本語の理解力もないとな w

717NAME IS NULL2018/02/17(土) 00:10:23.40ID:RRaJ3TQN
>>716
は?こっちこそお前がうまい返しと言ったとは言っとらんが???
異次元の理解力だなお前…
というかアスペだなwww

718NAME IS NULL2018/02/17(土) 00:12:55.27ID:???
ここもID強制表示にしてほしいな

719NAME IS NULL2018/02/17(土) 00:21:22.92ID:???
>>717
> というかアスペだなwww
自己紹介乙w

720NAME IS NULL2018/02/17(土) 15:34:21.57ID:lIYg2W3z
5chはROM専みたいな筆不精は、長文が書かれていると、時間をかけて書いていると思い込む。

世の中、超速で読み書きができる人間がいるのだよ。

721NAME IS NULL2018/02/17(土) 16:12:56.45ID:???
コピペの達人

722NAME IS NULL2018/02/17(土) 16:15:51.02ID:???
>>720
いきなりどうした?

723NAME IS NULL2018/02/18(日) 01:31:05.23ID:JhkmGsBQ
>>721
オリジナルです

724NAME IS NULL2018/02/18(日) 01:32:48.22ID:JhkmGsBQ
仕事でやってるなら仕事が異常に速いひとを知ってるはずだけどな。並の人間の20倍、30倍くらい仕事が速い人もいる。

新着レスの表示
レスを投稿する