データベース管理者

データベースのスキルを向上させ、コミュニティの他の人から学びたいデータベースの専門家向けのQ&A

3
JOIN条件とWHERE条件の実行に違いはありますか?
これら2つのクエリ例の間にパフォーマンスの違いはありますか? クエリ1: select count(*) from table1 a join table2 b on b.key_col=a.key_col where b.tag = 'Y' クエリ2。 select count(*) from table1 a join table2 b on b.key_col=a.key_col and b.tag = 'Y' 唯一の違いは補足条件の配置であることに注意してください。最初はWHERE句を使用し、2番目は条件をON句に追加します。 Teradataシステムでこれらのクエリを実行すると、Explainプランは同一であり、JOINステップはそれぞれの場合に追加の条件を示します。しかし、MySQLに関するこのSOの質問では、回答の1つはWHERE、結合が行われた後に処理が行われるため、2番目のスタイルが好ましいことを示唆しています。 このようなクエリをコーディングする際に従うべき一般的なルールはありますか?データベースに明らかに影響を与えないため、プラットフォームに依存する必要があると思いますが、おそらくそれはTeradataの単なる機能です。また、プラットフォームに依存する場合は、いくつかのドキュメントリファレンスを入手してください。何を探すべきか本当に分かりません。

5
テーブルをテキストファイルにエクスポートする最速の方法は何ですか
SQL Server 2012データベースと、300万行、おそらく50列のテーブルがあります。無人のバックグラウンドの.netプロセス(SQLまたはPowershellコマンドを発行する可能性があります)をテキストファイルにエクスポートする最速の方法は何ですか?.netプロセスは、エクスポートがいつ完了したか、またはエラーが発生したかどうかを知る必要があります。データ型はall intまたはになりnvarcharます。 私は、ado.netを使用してselect *コマンドを実行し、データリーダーをループして各レコードのファイルに書き込む純粋なC#コードは低速であり、これを並列化する方法はないと想定しています。 エクスポートは、SQL Serverマシンのローカルフォルダーではなく、リモート共有ネットワークフォルダーに行うことが理想的です。SQL ServerはHAクラスターになります。SSISはこれに適していますか、データ変換は必要ありませんか? .NetプロセスはマシンAで実行され、SQL ServerはマシンBで実行され、最終的なファイルの宛先はネットワーク共有です。1つのオプションは、SQLサーバーがファイルをネットワーク共有に直接書き込むことです。もう1つのオプションは、SQL ServerがマシンAに書き込み、ファイルが書き込まれると、.netプロセスがそれをネットワーク共有にコピーすることです。正式なSLAはありませんが、ファイルの書き込みに30分から1時間かかります。

1
ネストされていない配列の要素の元の順序を保持する方法は?
与えられた文字列: 「PostgreSQLは気の利いたものだと思う」 その文字列内で見つかった個々の単語を操作したいと思います。基本的に、私は単語の詳細を取得できるものとは別に、この辞書のその文字列のネストされていない配列に参加したいと思っています。 これまでのところ: select word, meaning, partofspeech from unnest(string_to_array('I think that PostgreSQL is nifty',' ')) as word from table t join dictionary d on t.word = d.wordname; これは、私が望んでいたことの基本を達成しますが、元の単語の順序を保持しません。 関連質問: PostgreSQLの要素番号を持つunnest()

3
使用する他のデータベースの内部ストアドプロシージャ用の中央CLRストアドプロシージャ/関数リポジトリライブラリを設定しますか?
C#CLRで開発したコードを使用して、システム上のすべてのデータベースで使用できるようにしたいので、それぞれを信頼できるものに設定し、CLRをオンにして、それぞれに同じコードの束を保持する必要はありません。 。 管理およびセキュリティの観点からこれを行う最良の方法はありますか?CLR関数は、文字列ブレーカー、電子メール検証、url en / decode、base64などのように非常に基本的です。各データベースのdboスキーマのみが関数にアクセスできるようにしたいと思います。 これを行う簡単な方法はありますか? また、CLR dllが埋め込まれているかどうか、およびデータベースを移動する場合、タグが一緒に移動するか、dllも移動する必要があるかどうかはわかりません。 ありがとう

2
PostgreSQL Turtleがあるのはなぜですか?
PostgreSQLのプロパガンダページをチェックしていたところ、この小さな芸術作品が見つかりました。 それは「タートル・スタイル」のPostgreSQLのロゴ。これは何歳で、PostgreSQLは公式に象の代わりに亀を使用しましたか?ここの話は何ですか?
17 postgresql 

3
特定の列の更新を制限します。ストアドプロシージャによるこれらの列の更新のみを許可する
ストアドプロシージャを通じてのみ更新したい繊細な価格列があります。更新するように設計されたストアドプロシージャを使用していない場合、すべてのコードまたは手動でこれらの価格列の値を変更しようとすると失敗します。 トリガーとトークンテーブルを使用してこれを実装することを検討しています。私が考えているアイデアは、トークンテーブルを持つことです。ストアドプロシージャは、最初にトークンテーブルに値を挿入する必要があります。次に、価格列を更新します。更新トリガーは、更新された行のトークンテーブルにトークンが存在するかどうかを確認します。見つかった場合、続行します。トークンが見つからない場合、例外をスローし、更新トランザクションを失敗させます。 この制限を実装する良い/より良い方法はありますか?


6
SQL Server Management Studio 2012:SSMSプロジェクトにフォルダーを含める方法
SSMS 2012を使用して、使用しているSQL Server 2012およびAzure SQLサーバーと通信しています。私はSQLの専門家ではないので、将来の参考のためにほとんどのSQLスクリプトを保存しています。SSMSプロジェクトで20個ほどの.SQLスクリプトにすぐに遭遇しましたが、それらはすべて同じ「クエリ」フォルダーの下にあります。 プロジェクトに「サブフォルダー」を作成して、スクリプトを適切に整理する方法はありますか?他のほとんどの人はどのようにスクリプトを整理しますか?このバグが私のような初心者であれば、実際の管理者にとっては本当の問題であるに違いありません(潜在的に何百ものスクリプトを使用していますか?)

5
数百万のユーザーを管理する方法は?
私は本当に大きなものを立ち上げようとしています。サーバーとデータベースを準備する必要があります。 100,000ユーザーの各セットを個別のユーザーテーブルにグループ化したいのですが、適切なユーザーテーブルにログインしようとする1人のユーザーを関連付ける方法がわかりません。 たとえば、ユーザーjay@mail.comがユーザーテーブル#36に関連していることをどのようにして知ることができますか? 1つのユーザーテーブルに1,000万人のユーザーがいるのと同じでしょうか、それとも100万人のユーザーがいるのでしょうか? Facebookはどうですか?彼らが9億5,000万のエントリを持つ1つのグローバルユーザーテーブルを持つとは信じられません。
17 mysql  users 

3
detach / copy / attachを使用するか、backup-restore-replayを使用してデータを移行する必要がありますか?
データベースファイルの新しいSAN(古いSANから)への移行に着手しようとしていますが、これを実装するためのオプションがいくつかあります。(1)サーバー上の新しいデータベースに完全バックアップを復元する作業レベルを検討することをお勧めしました。ただし、(2)私の当初の計画は、データベースをデタッチしてから再アタッチすることにより、古いSANから新しいSANにファイルをコピーすることでした。 私の腸は、よりフェイルセーフだと思うので、切り離して、コピーして、アタッチしたいことを教えてくれますが、それは私の単純なことかもしれません。データベースの名前を変更する過程で、トランザクションを見逃したり、何らかの形で「何かを壊したり」したくありません。 私の質問は、BACKUP-RESTORE-Replayオプションに対する懐疑論に正当化されるかどうか、およびそのオプションのその他のメリットまたはリスクは何ですか?

1
管理スタジオが閉じられたときにSQL Serverのパフォーマンスが低下する
SQL Server 2008 r2 expressの奇妙な動作に気付きました。 通常、クエリの実行時間は約650ミリ秒ですが、Management Studioを開いて単純なクエリ(たとえばSELECT * FROM Something)を実行すると、実行時間は約40ミリ秒になります。管理スタジオを閉じると、この値は通常〜650msに戻ります クエリが実行された場所に関係なく:Management Studioまたは私のアプリケーションから(ADO.Netを使用) ARITHABORT設定は効果がありません なんでこんなことが起こっているの?
17 sql-server  ssms 

3
NVLは何を表していますか?
何のNVL略ですか?私は、クエリ結果からNULL以外の値を除外するために使用されるOracleおよびInformix(おそらく他のいくつかの場合もある)関数について話している(COALESCE他のデータベースと同様)。


2
BIDSで時間ディメンションを再計算する
BIDSを使用して、SSAS 2008 r2でキューブを作成しています。 ウィザードを使用して時間ディメンションを作成しました。その構成の一部は、日付範囲の選択です。 作成後、当初指定したよりも広い日付範囲が必要であることに気付きました。 ディメンションを開いてプロパティに移動し、そこで日付範囲を再定義できることがわかりました。ディメンションを保存して再処理しましたが、テーブルの実際の日付範囲は新しく追加された日付を含むように拡大していません。 この時間ディメンションを成長させる別の方法はありますか、それともゼロから再作成する必要がありますか?

3
リレーショナルデータベースがビッグデータの規模を満たせないのはなぜですか?
ビッグデータの問題は、現在作成されている大量のデータを処理するためにリレーショナルデータベースを拡張できないことであることがしばしば繰り返されます。 しかし、Hadoopのようなビッグデータソリューションが拘束されないこれらのスケーラビリティの制限は何ですか?Oracle RAC、MySQLシャーディング、TeradataなどのMPP RDBMSがこれらの偉業を達成できないのはなぜですか? 技術的な制限に興味があります-RDBMSのクラスタリングの経済的コストが法外に高くなる可能性があることを認識しています。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.