为了可读性/可维护性而拆分长查询

时间:2011-03-22 22:33:55

标签: sql ms-access

我继承了一个Access数据库,该数据库的SELECT查询超过50列。即使在MS Access图形查询设计工具中,处理IMO的信息也太多了。

快速免责声明 - 我有编程背景,但几乎没有数据库经验。

对于这个特殊问题,我需要50多列的数据。获取此信息是否有比一个大查询更好的方法?

我对如何继续有点不知所措。网络上的共识似乎是SQL查询应该保持相对较小并且格式良好。当你需要这么多领域时,我只是不知道如何应用这个原则。我可以使用UNION或INSERT INTO临时表来进行大量简单查询吗?有任何建议或RTFM吗?

编辑:有关该应用程序的更多信息。数据分布在14个表中。我正在抓取数据,将其写入外部文件,每行有50多个字段(想想电子表格的CSV版本)。

编辑:Managing and debugging SQL queries in MS Access看起来包含相关建议。

5 个答案:

答案 0 :(得分:1)

我会回复大多数关于每次运行查询时需要50多列的评论。

但是,如果查询的丑陋导致50多列导致您的悲痛,您可以为该查询创建一个视图。它没有摆脱你正在处理大量数据的事实,但它可以封装一个SQL语句的大型毛茸茸的野兽。

答案 1 :(得分:1)

我认为你一点都不担心自己。从14个表中提取50个字段以输出到平面文件根本不算什么。关键是你有意对数据进行非规范化,因为你需要一个平面文件输出。根据定义,这意味着很多列。

正如其他人所说,一个表中的50列不同寻常(虽然不一定是设计错误),但在你描述的情况下,我根本没有看到任何问题。

简而言之,它听起来像是一个完美的设置,我只是想知道是什么让你认为这是一个问题。

答案 2 :(得分:0)

如果您要从所有列中检索数据,则可以编写SELECT * FROM ...

答案 3 :(得分:0)

如果单个表中有50列,则数据库设计充其量是有问题的。这实际上可能意味着您只需要应对不那么优雅的解决方案。

你真的一次需要所有这些数据吗?如果没有,那么在给定时间内只需要SELECT所需的数据可能会更好。您应该提供有关实际任务的更多信息。

答案 4 :(得分:0)

如果您的数据来自多个表,则可以使用Common Table Expressions将查询划分为分组。

相关问题