2016-06-13 12 views
1

私は5000万レコードの非常に大きなDBを持っています。私は 非常に高価なクエリは、私はindepth統計の目的のために実行したいです。これらのクエリは、サーバー/データベースの速度を低下させます。だから私は一回以上実行したくない - 私は日曜の夜にそれらを実行し、その週の結果を保存したい。高価なSQLクエリを1週間キャッシュ/保存できますか?

私は、関連するすべてのフィールドのデータにインデックスを付ける必要はありません。それは、数週間おきにDBを吹き飛ばすので、かなり時間がかかります。

高価なクエリの結果を無期限に保存するソフトウェア/ツール/プラクティスがありますか。 私のcurrnetの考え方は、一度クエリを実行し、結果を "stats"というデータベースの新しいテーブルに書き出すことです。 私はPythonを使用しています。

+0

あなたの処理で組み合わせた具体的なデータベースをpythonと一緒に追加すると、特定のソリューションがより簡単に提供されるかもしれませんか?また、あなたは既に役に立つかもしれないPythonコード。そのデータベースまたはテーブルが同じDB "製品"に入っているのでしょうか、または、sqliteをミックスに追加することを考えていますか(キャッシュの第3のコンポーネント)。何度もDBにヒットしないようにする、より多くのWeb中心の階層化されたアプリケーションでの経験によく使われるmemcachedはどうでしょうか?高価なSQLクエリが最適化されていることをすでに確認していますか?問題を軽減できる可能性がありますか? – Dilettant

+0

はい、クエリが最適化されています。 Sqliteは良いと思う - オプションかもしれない。 – Mark

答えて

0

同様の目的でSQL Server Management Studioに付属のjob agentを使用します。 DBがSQL Serverでない場合は、管理スタジオのlinked serverとして追加し、openqueryコマンドを使用してクエリを実行できます。あなたはあなたの仕事で詳細なスケジュール、電子メール/ SMSアラートなどを設定することができます。

EXEC master.xp_cmdshell「SQLCMD -SサーバSQLSERVERDEV2005 -E -Q \「pubs.dbo FROM TOP 10 *を選択します。あなたはあなたのジョブステップでthisのようなコマンドを使用することができ、ディスクに出力を保存するには

.authors "-b -oc:\ myoutput.txt '、no_output

関連する問題