我是一名前端开发人员,几乎没有 SQL 经验。我正在考虑为我工作的组织开发数据查询系统。
目前大部分数据都在一系列电子表格中。我有近 100 个工作表(即表格)来自同一模板(包括国家列),但根据工作表的规划方案(例如“高效”)和经济部门(例如“农业”)具有不同的值。每个工作表有大约 8000 行。
我是否为这些工作表中的每一个创建单独的数据库表 - 即使这些表将具有相同的CREATE
语句?在这种情况下,我想我会按照以下方式创建一个索引:
CREATE INDEX sector_scenario_lower_country ON sector_scenario(lower(country));
我必须创建这个索引 100 次(每个扇区场景表一次)。当我想找到我正在寻找的数据行时,我必须使用我的应用程序来识别正确的表(这真的不应该很麻烦或花费很多时间)然后进行查询:
SELECT col4, col5, col6 FROM sector_scenario WHERE lower(country) = "brazil";
还是应该将场景和部门的列添加到数据库表中,然后将所有工作表复制到该单个表中?
在这种情况下,我将只创建一次以下索引:
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";
显然,第二个选项的设置工作量要少得多。但是,我可以期待它的可比性能吗?