按列拆分查询结果的最佳实践

     2023-05-07     144

关键词:

【中文标题】按列拆分查询结果的最佳实践【英文标题】:Best practise in splitting up query result by a column 【发布时间】:2009-08-03 23:36:16 【问题描述】:

我有一个查询,它一次性返回多个数据系列的数据。

我想通过数据系列 ID 将这些数据拆分为数据系列 ID。无法更改查询。

假设数据按系列 ID 排序是不安全的,那么最好的方法是什么?林克?

【问题讨论】:

【参考方案1】:

我建议按DataSeriesId 对结果进行分组。

var groupedResult = QueryDatabase().GroupBy(item => item.DataSeriesId);

现在您可以按如下方式访问分组数据。该示例将仅打印包含所有项目的所有组。

 foreach(var group in groupedResult)
 
     Console.WriteLine("Group: " + group.Key);

     foreach(var item in group)
     
         Console.WriteLine("  Item: " + item);
     
 

或者您可以将数据库查询结果分组到列表列表中。

IList<IList<DataItem>> = QueryDatabase()
    .GroupBy(item => item.DataSeriesId)
    .Select(group => group.ToList())
    .ToList();

或者你可以建立一个从DataSeriesId到数据库查询结果的数据项列表的字典。

IDictionary<Int32, IList<DataItem>> = QueryDatabase()
    .GroupBy(item => item.DataSeriesId)
    .ToDictionary(group => group.DataSeriesId, group => group.ToList());

如果您以后不想更改字典,请使用Enumerable.ToLookUp()

更新

刚刚注意到问题中的“最佳实践”和“DataReader”标签。 LINQ 很容易编写,也很容易做对,但它可能不是最快的解决方案。因此,根据您的要求,使用 LINQ 可能是一个好或坏的选择。如果性能还不是问题,我更喜欢 LINQ。否则我会考虑在读取数据时构建一个从DataSeriesId 到数据项列表的字典。

IDictionary<Int32, IList<DataItem>> result =
    new Dictionary<Int32, IList<DataItem>>();

while (dataSource.DataAvailiable)

    DataItem item = dataSource.ReadItem();

    IList<DataItem> items;
    if (!result.TryGetValue(item.DataSeriesId))
    
        items = new List<DataItem>();

        result.Add(item.DataSeriesId, items);
    

    items.Add(item);

【讨论】:

react拆分组件的最佳实践?

...术A目前常用的做法使用React的lazy和suspence在组件维度实现拆分资源包。减少请求资源的大小,让首屏能更快渲染从上图能看到activity_full_refund_new的资源拆分后减少6KB,新增三个独立资源0、1、2简单的做法就是每个组件都拆分,这... 查看详情

在 C++ 中拆分字符串的最佳实践

】在C++中拆分字符串的最佳实践【英文标题】:BestPracticetosplitastringinC++【发布时间】:2020-05-1900:08:59【问题描述】:我正在学习C++的竞争性编程。我最近遇到了一个需要将字符串拆分成向量的问题(我来自Python和JavaScript背景,... 查看详情

django 设计模式/最佳实践:过滤查询集

】django设计模式/最佳实践:过滤查询集【英文标题】:djangodesignpattern/bestpractice:filteringaqueryset【发布时间】:2012-09-2603:01:13【问题描述】:我有一个向用户显示查询集结果的页面。我想做的是允许用户单击链接以应用过滤器。... 查看详情

在 React 应用中映射数组以优化性能的最佳实践

...使用字典的内存数据库lokiJS对搜索字段的每个onChange进行查询,因此结果非常很快。优化结果的呈现对我来说很重要,这样大约50个过 查看详情

联合两个查询结果按列

】联合两个查询结果按列【英文标题】:Uniontwoqueryresultcolumn-wise【发布时间】:2021-03-2717:40:18【问题描述】:假设我有两个查询返回两个具有相同行数的表。例如,如果查询1返回|a|b|c||1|2|3||4|5|6|查询2返回|d|e|f||7|8|9||10|11|12|如何... 查看详情

LIMIT MySQL php 的最佳实践

...间】:2014-02-0100:46:42【问题描述】:我想知道在PHPPDOMySQL查询中使用LIMIT是否有任何意义,结果无论如何都会返回1行(除非出现可怕的问题)。例如,给定一个表格:CREATETABLEusers(IDIntNOTNULLAUTO_INCREMENTPRIMARYKEY,usernamevarc 查看详情

微服务拆分治理最佳实践

...优化。经过思考,整体改造将分为三个阶段进行:数据库拆分:数据库按照业务垂直拆分。应用拆分:应用按照业务垂直拆分。数据访问权限收口:数据权限按照各自业务领域,归属到各自的应用,应用与数据库一对一,禁止交... 查看详情

DAO 最佳实践:查询父/子

】DAO最佳实践:查询父/子【英文标题】:DAOBestpractices:QueryingParent/Children【发布时间】:2010-12-1806:59:45【问题描述】:假设您有一个具有简单父/子关系的域模型,并且每个实体都有自己的关联DAO,例如:AuthorAuthorDAOBookBookDAO如果... 查看详情

从数据库刷新 EF5 结果的最佳实践

】从数据库刷新EF5结果的最佳实践【英文标题】:BestpracticetorefreshanEF5resultfromdatabase【发布时间】:2013-09-1613:21:19【问题描述】:在EntityFramework5中刷新数据的最佳方式是什么?我有一个WPF应用程序,显示来自数据库的统计数据,... 查看详情

编写/调试复杂 PL/pgSQL 查询的最佳实践

】编写/调试复杂PL/pgSQL查询的最佳实践【英文标题】:Bestpracticesforwriting/debuggingcomplexPL/pgSQLqueries【发布时间】:2014-11-2323:37:19【问题描述】:简而言之:使用过程编程技术(例如使用pl/pgsql)编写和调试PostgreSQL查询的最佳方法... 查看详情

查询项目(包括其链接数据)的最佳实践

】查询项目(包括其链接数据)的最佳实践【英文标题】:Bestpracticetoqueryitemsincludingtheirlinkeddata【发布时间】:2014-08-3019:08:44【问题描述】:一个数据库包含一个与另一个表具有一对多关系的表。第一个表有很多列,第二个只有... 查看详情

Android 中构建 Sqlite 查询的最佳实践

】Android中构建Sqlite查询的最佳实践【英文标题】:BestpracticeforSqlitequerybuildinginAndroid【发布时间】:2014-02-2618:35:32【问题描述】:我曾经使用输入参数构建我的Sqlite复杂查询,方法是将string值与我的参数连接起来,并返回此string... 查看详情

按列长度过滤结果

】按列长度过滤结果【英文标题】:Filterresultsbythecolumnlength【发布时间】:2013-12-2208:22:48【问题描述】:我需要从字段必须超过给定长度的查询中过滤一些结果。我知道这不起作用,但它会是这样的:SELECT*FROMMyTableWHERECOUNT(descrip... 查看详情

来自存储过程的多个结果集的 s-s-rS 最佳实践

】来自存储过程的多个结果集的s-s-rS最佳实践【英文标题】:s-s-rSBestpracticeformultipleresultsetsfromStoredProcedure【发布时间】:2014-07-0814:17:20【问题描述】:我正在使用s-s-rS2008,想获得一些关于处理多个结果集的最佳实践的建议。我... 查看详情

在 PHP 中执行参数化查询的最佳实践? [复制]

】在PHP中执行参数化查询的最佳实践?[复制]【英文标题】:BestpracticeforexecutingparameterisedqueriesinPHP?[duplicate]【发布时间】:2013-07-2817:32:26【问题描述】:好的,现在我的网站上有100-200个查询,全部参数化。这是其中之一的示例... 查看详情

在 JDBC 中编写 SQL 查询的最佳实践是啥

】在JDBC中编写SQL查询的最佳实践是啥【英文标题】:WhatistheBestpracticeforwritingaSQLqueryinJDBC在JDBC中编写SQL查询的最佳实践是什么【发布时间】:2014-01-1816:39:59【问题描述】:我正在通过使用JSP和带有JDBC的Servlet开发电子商务Web应用... 查看详情

Mysql 索引:查询生成器的最佳实践

】Mysql索引:查询生成器的最佳实践【英文标题】:Mysqlindexing:bestpracticeswhithquerybuilder【发布时间】:2021-08-3009:19:13【问题描述】:我们有包含数百万数据的表格。我们打算在此表上创建索引以优化搜索。这里的问题是这个表上... 查看详情

使用 Apollo 重新获取部分 GraphQL 查询的最佳实践?

】使用Apollo重新获取部分GraphQL查询的最佳实践?【英文标题】:BestpracticesforrefetchingpartofaGraphQLquerywithApollo?【发布时间】:2018-06-1212:52:54【问题描述】:我有以下react-apollo-wrappedGraphQL查询:user(id:1)namefriendsidname按照语义表示,它... 查看详情