c# – 使用Microsoft SQL Server从动态表中搜索数据

前端之家收集整理的这篇文章主要介绍了c# – 使用Microsoft SQL Server从动态表中搜索数据前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个这样的组织表:
OrgID | OrgInviteCode | OrgName       | Status | ProjectTableName | InsertOn
-------------------------------------------------------------------------------------------
 1    | RC12T67       | Organization1 | Active |  Project1        | 2015-12-19 15:37:43.333
 2    | BC56uI7       | Organization2 | Active |  Project2        | 2015-12-19 15:37:43.333
 3    | ORG1456       | Organization3 | Active |  Project3        | 2015-12-19 15:37:43.333
 4    | ORG2856       | Organization4 | Active |  Project4        | 2015-12-19 15:37:43.333

我有一个存储过程来为项目创建动态表.

如果成功创建了任何新组织,那么我们调用存储过程为该组织创建项目表.

每个组织都有自己的项目表.因此项目表名称对于每个组织都是动态的,并且它的名称存储在组织表中.

组织1 – >项目表

ProjectID | OrgID | ProjectName | ProjectInvideCode |   Address1        | Address2 |  City      |State    |   ZIP      |  Country
-------------------------------------------------------------------------------------------------------------------------------
1         |   1   |  Org1Proj1   |  XJ34590         | 235 Harrison St. |            | Syracuse  | AK      |  23456234    |  US
2         |   1   |  Org1Proj2   |  JKI8907         | 35 Sterling  St. |            | Syracuse  | NY      |  23456456    |  US

Organization2 – >项目表

ProjectID | OrgID | ProjectName | ProjectInvideCode |   Address1 | Address2 |  City       |State    |   ZIP    |  Country
-------------------------------------------------------------------------------------------------------------------------------
1         |   2   |  Org2Proj1   |  RUIO90          | 90 Ram St. |          | Los Angeles | CA    |  23456234    |  US
2         |   2   |  Org2Proj2   |  KLOP907         | 35 Wide St.|          | Chicago     | IL    |  23456456    |  US

我目前正致力于整合搜索功能.用户或匿名用户可以根据以下逻辑搜索数据:

>使用组织名称或组织邀请代码进行搜索.
>使用项目名称或项目邀请代码进行搜索.
>使用项目地址,城市,州,国家搜索

我知道找到组织名称和邀请代码搜索结果非常简单,因为所有内容都驻留在同一个表中.

但由于动态表名,获取项目的搜索结果(名称或邀请代码)会更复杂.我在How to fetch data from dynamic multiple tables?中找到了这个链接,所以我认为这不是一个更好的解决方案,因为搜索需要非常快.

我们之所以基于组织分离项目表是因为在我们的要求中他们明确提到“我们有1000000个组织,但每个组织有超过100万个项目”.希望您理解我们不希望在单个表中转储1000000(组织)* 1百万= XXXXXX项目的概念.

问题:

>我们如何以有效的方式搜索项目数据?
>我们的项目单独表概念是否最差?你有什么建议可以处理得更好吗?
> C#中有没有有效的方法

工具和技术:

> Asp.Net 4.5,C#
> MVC 5
>实体框架代码优先
> sql Server 2012

解决方法

我认为您可以创建组合所有项目表的VIEW
SELECT
    REPLACE(
        REPLACE( 
            REPLACE(
            (
                SELECT DISTINCT 'SELECT * FROM Organization O JOIN ' 
                    + ProjectTableName  
                    + ' PT ON O.OrgId = PT.OrgId WHERE O.OrgId = ' + convert(varchar(10),OrgId) 
                    as [text()] FROM Organization
                FOR XML PATH ('DELIMITER')  
            ),'</DELIMITER><DELIMITER>',' 
            UNION ALL 
            '),'</DELIMITER>',''),'<DELIMITER>','CREATE VIEW Organization_Projects 
AS
')

对源表的查询效率必须非常接近.

原文链接:https://www.f2er.com/csharp/243073.html

猜你在找的C#相关文章