私は SQL の経験がほとんどないフロントエンド開発者です。私が勤務している組織のデータ クエリ システムの開発を検討しています。
現在、データの多くは一連のスプレッドシートにあります。同じテンプレート (国の列を含む) から派生した 100 近くのワークシート (テーブル) がありますが、ワークシートの計画シナリオ (「効率的」など) と経済部門 (「農業」など) に基づいて値が異なります。各ワークシートには約 8000 行あります。
これらのワークシートごとに個別のデータベース テーブルを作成する必要がありますか?テーブルを介しても同じCREATE
ステートメントが含まれますか? この場合、次の行に沿ってインデックスを作成すると思います。
CREATE INDEX sector_scenario_lower_country ON sector_scenario(lower(country));
このインデックスを 100 回 (sector_scenario テーブルごとに 1 回) 作成する必要があります。探しているデータ行を見つけたいときは、アプリを使用して正しいテーブルを識別し (これはそれほど面倒でも時間もかからないはずです)、クエリを作成する必要があります。
SELECT col4, col5, col6 FROM sector_scenario WHERE lower(country) = "brazil";
または、シナリオとセクターの列をデータベース テーブルに追加してから、すべてのワークシートをその 1 つのテーブルにコピーする必要がありますか?
この場合、次のインデックスを 1 回だけ作成します。
CREATE INDEX main_table_idx ON main_table(scenario, sector, lower(country));
次に、次のクエリをかなり定期的に作成します。
SELECT col4, col5, col6 FROM main_table WHERE scenario = "efficient" AND sector = "agriculture" AND lower(country) = "brazil";
明らかに、2 番目のオプションを使用すると、セットアップの手間が大幅に軽減されます。しかし、同等のパフォーマンスを期待できますか?