X



トップページDB@2ch掲示板
1002コメント327KB
Microsoft SQL Server 総合スレ 11 [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
0001NAME IS NULL
垢版 |
2016/05/29(日) 16:50:08.13ID:dqKJQypQ
Microsoft SQL Server (Transact-SQL) の総合スレッドです。

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

過去スレとかめんどいから誰か適当に貼って
0101NAME IS NULL
垢版 |
2016/10/24(月) 03:47:25.19ID:???
>>98
生SQLとストアドって言ってるんだけど、何が全く同一なのか?

推定実行計画は必ずしも実際の実行計画なわけじゃないぞ

ストアド内の個々のSQLの、実際の実行計画って簡単には確認できなかった気がするなぁ
だれか簡単なやり方しってる?
0102NAME IS NULL
垢版 |
2016/10/24(月) 03:53:11.18ID:???
何が問題だったかわからんけど、とりあえず不要かもしれんインデックス追加して直りましたってか
パフォーマンスチューニングやる業者のレベルとしては信じられんな
0103NAME IS NULL
垢版 |
2016/10/24(月) 05:57:49.84ID:???
>>94
>replaceの必要性がわからんが
deleteしてinsertを一つのコマンドで実行したいからじゃねえ?
0104NAME IS NULL
垢版 |
2016/10/24(月) 07:59:00.21ID:???
文字列型のカラムで
2016/10/24 12:34:56
2016/1/2 2:3:5
のように桁がバラバラなのですが、それを
2016/10/24 12:34:56
2016/01/02 02:03:05
のように
YYYY/MM/DD HH:MM:SS
に揃えるSQL文を教えてください。
0105NAME IS NULL
垢版 |
2016/10/24(月) 09:01:09.32ID:???
>>101
dm_exec_query_statsにある情報でいいんかな
dm_exec_query_plan、dm_exec_sql_text組み合わせてステートメント単位でとってこれるよ
カーソルオープンは厳しかったと思うけど

生SQLが早いってことは検索条件に変数使ってるとかかね
分布が特異な偏りしてるインデックスをストアドで使うなら、with recompileつけるのが推奨だったと思う
ヒント文つけてもいいけど
0106NAME IS NULL
垢版 |
2016/10/24(月) 20:28:53.01ID:???
>>104
一旦日付型にCASTしてからフォーマット
つか特殊な要件が無ければ、DB上は日付型で保持してホストアプリ上で表示変換させた方が良いぞ

>>105
>dm_exec_query_plan、dm_exec_sql_text組み合わせ
それ見ても、どのプロシジャなのか探すのが大変だからなぁ
0107NAME IS NULL
垢版 |
2016/10/24(月) 21:24:42.51ID:???
>>106
>104
日付を文字列で保管するとどういうデメリットがありますか?
0108NAME IS NULL
垢版 |
2016/10/24(月) 21:34:11.43ID:???
>>106
dbidとobjectidで引っ張ってくればいいじゃない
うちはバックアップとかみたく自動で定期的にとるよう運用に乗っけてるよ
リリースして遅くなったなんてときにかなり重宝する
0109NAME IS NULL
垢版 |
2016/10/24(月) 21:39:15.61ID:???
>>107
orderbyとかwhere条件が大変
変換噛ましてやれないことはないが、そのぶんだけおそくなる
それにデータサイズも文字型のほうが大きくなる
0110NAME IS NULL
垢版 |
2016/10/24(月) 21:42:26.11ID:???
>>109
なるほど。
でも日付型は1750年以降くらいしか保持できないそうですが、それで
問題は出ないのですか?
0111NAME IS NULL
垢版 |
2016/10/24(月) 21:49:30.87ID:???
>>107
文字列で持ってたら、日付計算どうすんだよ

>>110
日付型って言っても色々あるから
dateかdatetime2使え
0112NAME IS NULL
垢版 |
2016/10/24(月) 21:52:59.93ID:???
>>111
>日付計算
このデータに関しては日付の計算をする予定はありません。
>dateかdatetime2使え
紀元前を扱うにはどうするのでしょうか?
0114NAME IS NULL
垢版 |
2016/10/24(月) 21:54:49.77ID:???
>>112
後はどういった要件があるのかな?
0116NAME IS NULL
垢版 |
2016/10/24(月) 22:07:49.71ID:???
>>115
どういった目的で紀元前を扱いたい?
扱うとは具体的にどういった処理をする?
0117NAME IS NULL
垢版 |
2016/10/24(月) 22:31:02.56ID:???
>>116
紀元前を扱う目的はその年代の年月日をデータで保管したいから。
日付の計算はしない。
それだけ。
0119NAME IS NULL
垢版 |
2016/10/26(水) 00:41:26.43ID:???
てきとーにアンインストールしたら次から全然インストールできんくなった...助けて
0120NAME IS NULL
垢版 |
2016/10/26(水) 01:21:01.81ID:???
インストールログみて止まってるとこでググる
システムの復元でアンインストール前に戻す
OSから入れ直す
なにも情報ないからこれくらいしか言えない
0121NAME IS NULL
垢版 |
2016/10/26(水) 12:44:47.05ID:???
ットアップが失敗しました。
クリーンアップが必要ですってポップアップがでてきます..
0122NAME IS NULL
垢版 |
2016/10/28(金) 08:12:24.68ID:???
なんとか、再インストールできやした。あざした。
0123NAME IS NULL
垢版 |
2016/10/31(月) 14:07:37.12ID:???
sql serverとmysqlとで同じテーブルを同期させるなんて出来ますか?
sql serverの本データをmysqlにコピーする感じで。
0124NAME IS NULL
垢版 |
2016/11/03(木) 07:25:24.79ID:???
>>123
MySQLへリンクサーバー定義して、同期時に更新とかで出来そうな気がする
同期どうするかは考えんとダメだけど
0125NAME IS NULL
垢版 |
2016/11/03(木) 10:12:13.06ID:???
>>124
sql serverからmysqlへの一方通行のコピーなら簡単に出来るもんなの?
0126NAME IS NULL
垢版 |
2016/11/04(金) 05:38:06.52ID:???
リンクサーバ定義すれば、SQLServerからはローカルテーブルとほぼ同じように扱える
0127NAME IS NULL
垢版 |
2016/11/04(金) 16:29:37.52ID:???
>>126
ありがとうございました。
リンクサーバーでググってみます
0128NAME IS NULL
垢版 |
2016/11/07(月) 22:55:01.33ID:???
デフォルトだとdbo スキーマが使われますが、
実際の開発現場では、スキーマを何種類も作成して使い分けるなど
するのでしょうか?
dbo一個だけでテーブルを使い分ければそれで済む場合も多いと思いますが。
0129NAME IS NULL
垢版 |
2016/11/07(月) 23:26:03.19ID:eRnTZUaL
>>128
dboはスキーマではなくユーザー。

Oracleのようだと勘違いしてる?
0132NAME IS NULL
垢版 |
2016/11/08(火) 23:19:02.99ID:???
今のSQLServerはDBユーザとスキーマが別なので、同じ名称のスキーマもユーザも存在するぞ

スキーマは使い分ける必要があればそうすればいいし
単一スキーマで問題なければ全部dboでもいいんじゃね
0134NAME IS NULL
垢版 |
2016/11/09(水) 09:53:38.05ID:???
>>132
>スキーマは使い分ける必要があればそうすればいいし
スキーマを分けるのは例えばどんな場合なん?
0135NAME IS NULL
垢版 |
2016/11/09(水) 19:50:50.41ID:???
>>134
テーブル更新できないスキーマ作ったりのセキュリティ要件とか

スキーマっていうよりユーザって言う方がしっくりくるんだけどな
まあどうせDBごとでユーザとスキーマは1対1だろうし
実際スキーマとユーザの違いはすっきり説明できん
単にワンクッション入ってるだけってイメージだ
0136NAME IS NULL
垢版 |
2016/11/09(水) 22:45:58.11ID:9dB+mYx1
>>133
本来はユーザーで所有者なんだよ。

スキーマという概念は後付け。

SQL Serverではユーザーとスキーマは別のくくり。
0137NAME IS NULL
垢版 |
2016/11/09(水) 23:03:36.67ID:???
そんなオレオレ定義を開陳されても困る
0138NAME IS NULL
垢版 |
2016/11/10(木) 18:02:32.23ID:0Mu12LBJ
私は元創価の会員でした。
すぐ隣に防衛省の背広組みの官舎があるのですが、
自分の家の窓にUSB接続のwebカムを貼り付けて、そこの動画を撮影し続け、
学会本部に送っていました。

別に大したものは写っていません。ゴミだしとか奥さんが子供を遊ばせている所とか。
官舎が老朽化して使われなくなってから、
今まで法人税(うちは自営業です)をほぼ払わなくても済んでいたのが、
もう守ってやれないのでこれからは満額申告するように言われました。
納得がいかないと言うと、君は自業自得で餓鬼地獄へ落ちる、
朝夕南無妙法蓮華経と三千回ずつ唱えて心をきれいにしなさいと言われ
馬鹿らしくなって脱会しました。

それ以来、どこへ行くにもぞろ目ナンバーの車につけまわされたり大変な日々です。
全部自分の出来心から起きたことで、どこに訴えるわけにもいかないのですが、
なんとかあの人たちと縁を切った上で新しい始まりを迎える方法はないんだろうか。
0139NAME IS NULL
垢版 |
2016/11/10(木) 22:12:44.11ID:???
まあ、SQLServerに限れば、昔はスキーマとDBユーザは同一だったから
>スキーマという概念は後付け。
と言えなくはないかもしれんが

>SQL Serverではユーザーとスキーマは別のくくり。
とどうつながるのか理解できん
0140NAME IS NULL
垢版 |
2016/11/11(金) 07:20:29.10ID:???
スキーマを正しく説明出来る人はここにはいないんですか?
0141NAME IS NULL
垢版 |
2016/11/11(金) 10:40:53.75ID:???
CitrixのXenAppのデータベースのぞいたら、サービスの単位でスキーマ分けてたな
ユーザはコンピュータアカウントだけででdb_owner
そんなやり方もあるんだなと感心した
うちは機能単位でなんてわけられないからdbo1個
リソースガバナー使う場合もあるからユーザは複数
0142NAME IS NULL
垢版 |
2016/11/11(金) 10:55:41.98ID:???
>>140
スキーマというのは、大抵のRDBMSで共通する概念ですね。
一つのデータベース内で論理的なグルーピングをするためのものです。

PostgreSQLのヘルプがわかりやすいので引用します。

> データベースには、複数の名前付きスキーマが含まれ、スキーマにはテーブルが含まれます。
> スキーマには、データ型、関数および演算子などの他の名前付きオブジェクトも含まれます。
> 同じオブジェクト名を異なるスキーマで使用しても矛盾は起こりません。

> スキーマの使用が好まれる理由はいくつかあります。
>
> ・1つのデータベースを多数のユーザが互いに干渉することなく使用できるようにするため。
> ・管理しやすくなるよう、データベースオブジェクトを論理グループに編成するため。
> ・サードパーティのアプリケーションを別々のスキーマに入れることにより、他のオブジェクトの名前と競合しないようにするため。
> ・スキーマは、ネストできないという点を除き、オペレーティングシステムのディレクトリと似ています。
0144NAME IS NULL
垢版 |
2016/11/13(日) 01:56:32.48ID:ImZglz/9
SQL Serverは日本マイクロソフトのサポートがやる気ねえからな。
0145NAME IS NULL
垢版 |
2016/11/13(日) 17:11:33.05ID:???
日本MSはMSの名を借りた国内代理店だと思ってる
0146NAME IS NULL
垢版 |
2016/11/14(月) 10:03:43.16ID:???
Windows Server 2012R2 のWindows VPSでSQL Server Express 2016動かすには
メモリ2GBだと厳しいか?
IISも動かしている。
0147NAME IS NULL
垢版 |
2016/11/14(月) 19:09:41.20ID:???
Expressは使用メモリ1GBに制限されてなかったかな…
もちろん余裕があるに越したことはないけれども
0148NAME IS NULL
垢版 |
2016/11/15(火) 00:33:47.54ID:???
Committed bytesの適正値を考えると、メモリ2GBならIISとSQLserver合算で1GB未満、できれば600〜800MBくらいかなあ感覚だけど
IISとSQLserverで上限設定しときゃサーバーが不安定になるのは抑えられると思う
素直にメモリ増強するのが一番いいけどね
0149NAME IS NULL
垢版 |
2016/11/15(火) 23:39:28.97ID:???
>>147>>148
レスありがとうございました。
余裕をみて4GBくらいでVPS契約してみます。
0150NAME IS NULL
垢版 |
2016/11/16(水) 11:07:27.41ID:???
>>149
個人利用でやる分には2GBでもいいと思うよ
会社のパソコン(Windows7の32bit、メモリ2GB)にSQLserver Developer EditionとIIS入れてて普通に動作する
Officeとかも使うとやっぱきつくなるんで普段はサービス停止してるけどね
0151NAME IS NULL
垢版 |
2016/11/16(水) 12:40:26.64ID:???
質問です。

先日、知り合いの店でデータベースリストアが勝手に走ったのですが
何が原因なのか不明な状態です。下記が一部ログになります。

The database '*****'' is marked RESTORING and is in a state that does not allow recovery to be run.

分かる方いらした教えてください。
0153NAME IS NULL
垢版 |
2016/11/17(木) 23:05:51.60ID:???
ある特定のテーブルで大量の件数をDeleteする時だけ
異常に時間がかかるんですが何故だかわかりますか?
ググってもイマイチ分からんです

Delete From TABLE Where PK<****
みたいな単純なやり方なんですが…

エスパーの方教えてください
0154NAME IS NULL
垢版 |
2016/11/18(金) 00:05:01.89ID:???
>>153
断片化が走りまくってるとか?
Insertするときもプライマリキー張ってると徐々に遅くなってくしそれかも
一回リビルドインデックスしてからやってみたら変わらんかなあ

sum関数でInt型の限界越えてオーバーフローしたんだが、実行プラン次第でオーバーフローしたりしなかったりするのは仕様?不具合?
2008r2から2014のsp2に移行しようとして本番データで動かしたらエラーなりやがった
MSに問い合わせる前にバグか仕様かのあたりつけときたい
0155NAME IS NULL
垢版 |
2016/11/18(金) 07:56:06.38ID:mgIvH7zu
>>153
SELECTするときも時間がかかってる?
0156NAME IS NULL
垢版 |
2016/11/18(金) 08:03:38.07ID:???
あとでrollbackされたときに備えて、delete予定データをいったんtempに吐いてるから
データ数が多いと死ぬほど遅い

生かすデータだけ別テーブルに吐いてtruncate tableして別テーブルをリネームしたほうが早い場合もある
0157NAME IS NULL
垢版 |
2016/11/18(金) 08:05:35.18ID:???
リレーション絡んでると無理だけど
0158NAME IS NULL
垢版 |
2016/11/18(金) 08:14:49.18ID:mgIvH7zu
>>156
そんな初心者みたいなアドバイスするなよw
0160NAME IS NULL
垢版 |
2016/11/18(金) 12:53:12.29ID:???
>>156
1000万件中10万件だけ残したいとか
そういう時はそっちの方がいいよね
truncateは本当に爽快
0161NAME IS NULL
垢版 |
2016/11/18(金) 13:09:12.94ID:mgIvH7zu
初心者スレかよw
0162NAME IS NULL
垢版 |
2016/11/18(金) 13:35:15.03ID:???
だけど、>>156 以外に方法ないんだな、これが
あと、1回あたりのdelete数を減らしてやって(その分、何回も回して)
1トランザクションあたりのロックを多少なりとも緩和するか
0163NAME IS NULL
垢版 |
2016/11/18(金) 13:39:05.15ID:???
自分の場合、1億レコードが1000万件を退避させるとき
SET ROWCOUNT 指定して、小刻みに削除してる
(トランザクションログが一杯になるのを防止)

それでも平気で一晩とかかかるが
0164NAME IS NULL
垢版 |
2016/11/18(金) 13:41:35.56ID:mgIvH7zu
>>163
おまえの環境なんか知らねえよw
0165NAME IS NULL
垢版 |
2016/11/18(金) 13:48:32.20ID:???
じゃ具体的な打開策を示してみろよ
0166NAME IS NULL
垢版 |
2016/11/18(金) 18:52:28.15ID:???
・復旧モデルを完全から単純にする
・テーブルロックを明示して削除する
・クラスターインデックスをやめる
・インデックスをドロップしてから削除

全部やって遅いなら、ハードを速いのに変えろ
0167NAME IS NULL
垢版 |
2016/11/19(土) 10:21:04.31ID:???
具体的には何も言えないチキン ⇒ ID:mgIvH7zu
0168NAME IS NULL
垢版 |
2016/11/19(土) 10:29:48.42ID:???
パーティションテーブルにできるならそれにしちゃえば?
あれならパーティション単位にトランケート 出来るらしいが
0169NAME IS NULL
垢版 |
2016/11/19(土) 11:41:15.25ID:???
色々あるもんだね
0170NAME IS NULL
垢版 |
2016/11/19(土) 12:44:15.23ID:QTm9YLIS
>>167
質問した本人がいないからな。
0171NAME IS NULL
垢版 |
2016/11/19(土) 15:34:55.16ID:???
truncate table に where 書けたら解決なのにな
それか、delete に「Rollback不能で構いませんから速くやってください」って with 句を準備してくれるか
0172NAME IS NULL
垢版 |
2016/11/19(土) 21:17:15.83ID:???
ロールバック不能で良いっていっても、その文でのアトミックは保障しないとだめだからなぁ
0173NAME IS NULL
垢版 |
2016/11/19(土) 22:46:43.49ID:???
>>154
これの下の質問書いた者です
不具合ではなさそうなのがわかったのですがどうしたものかと質問です。

select 番号,sum(金額)
from テーブルA
inner join テーブルB on 〜
inner join テーブルC on 〜
inner join テーブルD on 〜
where 〜
group by 番号

これの実行プランがテーブルDとの内部結合前にgroup byとsumしててInt型の上限越えてしまいました
テーブルDとの内部結合を先にやってくれてたらそのデータが除外されて問題なかったのにっていう結果
whereとjoinとgroupby って優先順位特にないんでしたっけ
確実なエラー回避方法がBIGInt変換くらいしか思い付かない
0174NAME IS NULL
垢版 |
2016/11/19(土) 23:12:30.44ID:???
>>171
deleteも結局はページ単位の処理になるからね、消すだけじゃなくページ間のインデックスも保持しなきゃとかいろいろやってるから
全部いらないから細かいこと抜きでってできるtruncateのようにはいかないよ
0175NAME IS NULL
垢版 |
2016/11/20(日) 01:43:45.15ID:???
>>173
SQLは手続き型言語ではないので実行順序はオプティマイザが決めるってのが原則
ある程度はオプティマイザへの指示をクエリヒントって形で出せるけど

Dの結合を先にするようにサブクエリ書いてFORCE ORDER指定で行けるかもしれんが
そんなSQLは保守性わるいし、基本的にはどんな実行計画でもエラーにならんようにしろとしか
0176NAME IS NULL
垢版 |
2016/11/23(水) 10:58:15.12ID:???
>>163
1億レコードって物凄い大きなDBですか?
どんなシステムなのか見当もつかない
0177NAME IS NULL
垢版 |
2016/11/23(水) 15:31:19.70ID:RVwlvGQS
>>176
誰もが知ってる会社のシステムならその程度は珍しくもないけど。
0178NAME IS NULL
垢版 |
2016/11/23(水) 20:11:21.26ID:???
>>176
全然普通じゃん
どんな仕事してん?
0179NAME IS NULL
垢版 |
2016/11/23(水) 21:48:35.25ID:???
>>178
むしろお前にどんな仕事してるのかを聞きたいわ
0180NAME IS NULL
垢版 |
2016/11/24(木) 00:03:09.24ID:nZ9WujKe
スカート捲ってもらって股間の香り嗅ぎながらチンポ握ると五分で発射寸前だよ。
二十歳ぐらいの女の子のナマパンツに顔を埋めて拭き取り漏れのお尻の穴のリアルな香りを嗅いで好き放題シコる。
この状況で一時間持つ意味が分からん。
0181NAME IS NULL
垢版 |
2016/11/28(月) 14:13:26.04ID:???
更新しなくてSELECTだけのストアドがあります。
パラメータは3つです。

返ってくる行は30行程度で
クエリエディタから実行すると精々1〜2秒で戻ってきます。

クエリエディタでやってることと同様のものを
System.Data.SqlClient.SqlCommand で作って ExecuteReader してやるんですが
ExecuteReader が終わるまで15秒ほどかかります。
条件のよいとき(クエリエディタで1秒のもの)でも8〜9秒です。

いったい何が原因なのでしょうか。
0182NAME IS NULL
垢版 |
2016/11/28(月) 14:34:48.86ID:???
解決しました。

ALTER DATABASE データベース名 SET ARITHABORT ON
で算術アボートを有効にしてやったら、クエリエディタと同じになりました。
0183NAME IS NULL
垢版 |
2016/11/28(月) 14:56:49.87ID:???
ちょっと違ってました。

ALTER DATABASE データベース名 SET ARITHABORT ON
することで、クエリエディタと同じ速度になりましたが、
ADO.NET のときと同じ速度に、つまりは遅い方に揃ってしまいました。

ALTER DATABASE データベース名 SET ARITHABORT OFF
に戻したうえで、SqlCommand を投げるごとに
先に SET ARITHABORT OFF しておくと、早いクエリエディタと同じ速度になりました。

ゼロ割算の対策はしてあるつもりだし、むしろ NULL で進むよりエラーにしてもらったほうが嬉しいので
これはこれでいいのですが、全ての SqlCommand に埋め込まないといけないのか・・・
0184NAME IS NULL
垢版 |
2016/11/28(月) 15:26:31.97ID:???
>>181-182
テーブル変数とか使ってる?
実テーブルからだけのselectでも発生してる?
0185NAME IS NULL
垢版 |
2016/11/28(月) 15:54:51.04ID:???
テーブル変数を使ってたんですが、作業表(#〜)にしても一緒でした。
中身一緒かもしれませんが。
0186NAME IS NULL
垢版 |
2016/11/28(月) 16:07:15.48ID:???
>>185
テーブル変数つかうと、行数を正しく判定できないで遅いプラン作る事があるってのは聞いたことある
selectしてるとこにRECOMPILEヒント入れるとマシになるかも
当然リコンパイル分のパフォーマンス劣化はあるけど、遅いプランとどっちがマシか比べて
0187NAME IS NULL
垢版 |
2016/11/28(月) 16:19:19.41ID:???
ストアドの中のselect〜の末尾に option(RECOMPILE) 追加するんですよね?
試してみましたが、全く効果なく、事前の SET ARITHABORT ON を外すと元通り劇遅になりました。

ConnectionStringで SET ARITHABORT ON を指定できたらいいのですが。。。
0188NAME IS NULL
垢版 |
2016/11/28(月) 16:38:59.67ID:???
ARITHABORT OFFで遅い実行計画つくることがあるとはMSDNにも書かれてるけど
実際にそれが原因で問題のある実行計画作られたのは見た事ないなぁ
executeにWITH RECOMPILEつけても同じ?
これでダメなら、自分で適切なヒント付けてやればいいんだけど
そもそも実行計画の問題じゃない気もしなくはないな
0189NAME IS NULL
垢版 |
2016/11/28(月) 17:00:05.82ID:???
テーブルに単価のフィールドを持ってなくて、そのかわりに金額÷数量を単価とみなすビューを作ってあるんです
金額/nullif(数量,0) as 単価

それ利用してるもんだから、ゼロ割算の関係だとしたらビンゴなんですよ。
0190NAME IS NULL
垢版 |
2016/11/28(月) 17:12:45.91ID:???
以降は、君のブログで。
0191NAME IS NULL
垢版 |
2016/11/28(月) 17:20:38.36ID:???
SET NOCOUNT ON してる?
ほんとにSET ARITHABORT の問題なら、ストアドの中でSET ARITHABORT ON すれば良い
0192NAME IS NULL
垢版 |
2016/11/28(月) 17:30:39.39ID:???
>>191
SET NOCOUNT ON は基本やってます。
ストアドの中で SET ARITHABORT ON 明示してもいいんですか。

とりあえず今回気が付いたもの以外にも、気が付かないだけで潜在的に遅いものがありそうな気がしてまして
かつ、ストアドでなくソースの中でSQL吐いてるのもあって、
CreateCommand する直後で全て SET ARITHABORT ON したほうが良さそうな感じ。

http://www.sommarskog.se/query-plan-mysteries.html
が詳しいようです。
0193NAME IS NULL
垢版 |
2016/11/28(月) 17:32:01.75ID:???
いま注目してるストアドを相手にしたときは

SET ARITHABORT OFF で16秒
SET ARITHABORT ON  で2秒

くらいの違いがありました。
続けて何度か回しても結果は大差ないので、キャッシュの関係もなさそうだし・・・
0194NAME IS NULL
垢版 |
2016/11/28(月) 18:04:45.26ID:???
>>192
そこも、基本的にはオプションが違うと実行計画が違うよって話

実行計画うんぬん以前に、オプションで結果変わってるし
そのコードじゃゼロ割りの対策してないしw

キャッシュってのは、クエリプランのキャッシュのこと
データキャッシュとは別だから、何回回しても大差ないよ
0195NAME IS NULL
垢版 |
2016/11/28(月) 18:12:55.62ID:???
>>194
> そのコードじゃゼロ割りの対策してないしw
ど素人は黙っとけ
0196NAME IS NULL
垢版 |
2016/12/02(金) 13:29:12.92ID:???
col1  nvarchar(100)   Primary Key
col2  int  Primary Key, IDENTITY
con3  nvarchar(100)
の場合に
col1,col3の値を指定してinsertのつもりが、間違えてUpdateを実行したら
col1の値に等しい全ての行のcol1, col3が全部同じ値になってしまったのですが
そういうもんですか?
0197NAME IS NULL
垢版 |
2016/12/02(金) 15:28:09.53ID:???
どうやったらInsとupd間違うんだろう
where句なしで実行ってこと?
ORマッパーみたいなツールの話だろうか
0198NAME IS NULL
垢版 |
2016/12/02(金) 15:30:42.82ID:???
言ってる意味がわからないけど
col2がidentityならそれでユニークは保障されるから
col1とcol3が全部同じでもなんの不思議もない

どう間違えたらinsert文がupdate文になるのか知らんが
そういうSQL流したんだろ
0199NAME IS NULL
垢版 |
2016/12/02(金) 17:00:30.97ID:???
col1   col2    col3
Aさん    1    データ1
Aさん    2    データ2
Aさん    3    データ3
Bさん    4    データ4
Cさん    5    データ5
Cさん    6    データ6

col1   col2    col3
Aさん    1    データ1
Aさん    2    データ1
Aさん    3    データ1
Aさん    4    データ1
Aさん    5    データ1
Aさん    6    データ1
こんなふうになりました。 👀
Rock54: Caution(BBR-MD5:0be15ced7fbdb9fdb4d0ce1929c1b82f)
0200NAME IS NULL
垢版 |
2016/12/02(金) 17:54:06.99ID:???
update 表名
set col1 = 'Aさん',col3 = 'データ1'

以外でこうなるSQLを考えるクイズの時間です
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況