2009-03-25 13 views
0

SQL Server 2000(T-SQL)に変換している複数のMS Accessクエリ(ビューおよびストアドプロシージャ内)があります。サブクエリや元の開発者の制限に関するAccessの制限により、他のビューのサブクエリとしてのみ機能する多くのビューが作成されています。SQLクエリをどのようにリファクタリングするのですか?

「アクセスアプリケーションが行うことを実行する」ことを除いて、明確なビジネス要件はありません。また、レポート/ CSV抽出に関するノートページの半分はアクセスアプリケーションでも疑わしいことをしません適切に要求されます。

私は、アクセスDBをT-SQLに 'コピー'する必要があります.T-SQLでは、通常は要件をよりよく理解し、トップダウンアプローチを採用して、満たすための新しいクエリを作成します明確に定義された要件。

これを実行する方法はありますか?私はそれを全部広げて、それを数日間過ごすのか、それともAccessビューをコピーして、クエリを最適化する進化的アプローチを採用するだけですか?

+0

それらのアクセスビューにいくつかのバグがあります。 –

答えて

1

どのようなアクセスをクエリで実行し、この知識を使用して正しく転送したことを確認します。一度これをしてしまえば、リファクタリングについて考えることができます。私は遅いクエリから始めてそこから行くでしょう:あなたが必要とするインデックスを探し出し、次第に書き直します。こうすることで、すべてを正常に動かしたことが証明されるとすぐに(たとえ潜在的に少し遅い場合でも)すぐに配信することができます。問題Xが発生したため、これは全く提供できないよりはるかに優れています。

0

ビューをすぐにSQL Serverにコピーし、洗練されたツールを使用してそれらを掘り下げることをお勧めします。

たとえば、SQL Serverでは、特定のビューに依存するビューやストアドプロシージャなどが表示されるため、ビューが1つであるか、複数の場所で実際に使用されているかを見ることができます。どのビューがより重要かを判断するのに役立ちます。

1

私はおそらくAccessデータベースから始め、その場でクエリを実行し、結果セットが何であるかを確認します。クエリが何を達成しているかを理解し、それを達成するために独自の設計に戻すことができます。 (徹底するためには、とにかく意図をかなり完全に理解する必要があります)。そして、それはあなたが得ようとしている要件の最良のステートメントのように聞こえます。

それ以外は、私が考えることができる最高のアプローチです。 SQL Serverに入ったら、テストとGrokkingを開始してください。

1

このような問題に対処している場合、増分変更を行っている間はそのまま動作させると便利です。これはリスク管理の観点から優れています。

データベースのパフォーマンスをチェックし、パフォーマンスの問題を最適化することに集中したいと思います。次に、機能を追加してバグを修正するときに、維持しにくいコードをクリーンアップします。あなたが言ったように、サブクエリは実際にはビューに非常によく似ています。だから壊れていないならば、それを変更する必要はないかもしれません。

1

これはタイムラインによって異なります。できるだけ早くプロジェクトを実行しなければならない場合(私はこれがすべてのプロジェクトに当てはまることは分かっていますが、本当にあなたのために真実ならば)、はい、アクセスから機能とインフラストラクチャを複製し、あなたが行く。あなたには、いくつかの時間を持っている場合は

あなたは、それに捧げ、その後、あなたに二つのものを与える今それをリファクタリングすることができます

  1. あなたはコードで幸せになるでしょう、そしてそれは(おそらく)以来、パフォーマンスが向上します実際の分析は、コピーペーストのトランスコードに相当するものではなく、行われました。
  2. 実際のビジネスルールが何であるかを理解しやすくなるでしょう。特にあなたの記述方法を考慮して)
関連する問題