私は学校で働き、学校のクラブの後にどの子供が行ったかを調べる悪夢を助けるためのデータベースを構築しました。不器用なクエリを最適化する
私は、リンクテーブルを使用して、42個のレジスタ(Excelドキュメント)のそれぞれから描画するデータベースを構築することでこれを試みました。次に特定のフォームから生徒を検索するいくつかの照会をセットアップしてから、それぞれのフォームグループがそのフォームの子供が特定の週にクラブに行ったかどうかを確認できるようにレポートを生成します。
私のSQLの知識は基本的です。さまざまなことを行うためのクエリを書くことはできますが、大きなクエリを最適化する方法はわかりません。
私が抱えている問題は、各レポートが生成に2分30秒かかることです。これで、42個のレジスタすべてがクエリに追加されました。私が31歳のときには、30秒後にレポートが生成されていました。ここで
は、クエリのサンプルです:
SELECT [UID], [Name], [Group], [Week 1], [Week 2], [Week 3],
[Week 4], [Week 5], [Week 6]
FROM [club 1]
WHERE ((([Club 1].[Group])="group name"))
UNION ALL
SELECT [UID], [Name], [Group], [Week 1], [Week 2], [Week 3],
[Week 4], [Week 5], [Week 6]
FROM [club 42]
WHERE ((([Club 42].[Group])="group name"));
問合せは、私が言ったように、初期SELECT
後41 UNION ALL SELECT
年代を持っており、ほとんどの場合、ほとんどのinificient、目hurtinglyひどく書かれたクエリですが、私のSQLの知識は基本的なものであり、私が行くにつれて私は学んでいます。
さらに詳しい情報: これらのレジスターには480人の学生がおり、1人の学生が1週間に複数のクラブに行くことができるので、照会は生徒がクラブに通った各インスタンスを見つける必要があります。
Excel以外のアクセス方法Excelでのアクセスは非常に限られています。私はいくつかの友人と話し合い、MySQLのアプローチを見て、ネットワーク上のローカルサーバーを設定しましたが、私たちのネットワークは管理されたサービスであり、それを管理する会社はサーバー上に設定されているもの理解できるように)。
これはおそらくこれを実行する唯一の方法であり、クエリを2分30秒かかると、毎週金曜日に各レジスタを調べるのに30分かかります。私はこれを分類しようとしている理由は次のとおりです。
A)私は、データベースにアクセスする教師は、多くの場合、せっかちで、クリックしてください)今のところ、SQL
Bを欠場するために管理し、さらにプログラミングの私の知識を拡張し、持ちたいですレポートが無作為に速く動作するようにロードしようとするとランダムに発生し、しばしばアクセスがクラッシュすることがあります。
ご迷惑をおかけして申し訳ございません。私は何かを試してみたいと思っていますが、これは主に私にとって新しい領域なので、私と一緒に裸でください。
私の最初の考えは、Accessですべてを構築することでしたが、これは私の暇な時間に行われており、元のレジスタを削除してAccessデータベースで置き換えると述べたときに不満を募らせました。 私は実際にICTを学校で教えていますので、十分に満足していますが、これは時間の問題です。 私はこの回答を検討しており、唯一の措置は、これをすべてAccessに入れる時間を見つけることだと思います。 私は不平のために、この豚のような方法でそれを使用しようとしたことに対する馬鹿感を感じます。 返信いただきありがとうございます。私はすぐに助言のために戻ってきます。 – Vred