Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Performance 实体框架SQL选择600多列_Performance_Oracle_Entity Framework_Entity Framework 4 - Fatal编程技术网

Performance 实体框架SQL选择600多列

Performance 实体框架SQL选择600多列,performance,oracle,entity-framework,entity-framework-4,Performance,Oracle,Entity Framework,Entity Framework 4,我有一个针对oracle运行的实体框架生成的查询太慢了。它运行大约4秒钟 这是我询问的主要部分 var query = from x in db.BUILDINGs join pro_co in db.PROFILE_COMMUNITY on x.COMMUNITY_ID equals pro_co.COMMUNITY_ID join co in db.COMMUNITies on x.COMMUNITY_ID eq

我有一个针对oracle运行的实体框架生成的查询太慢了。它运行大约4秒钟

这是我询问的主要部分

var query = from x in db.BUILDINGs
                    join pro_co in db.PROFILE_COMMUNITY on x.COMMUNITY_ID equals pro_co.COMMUNITY_ID
                    join co in db.COMMUNITies on x.COMMUNITY_ID equals co.COMMUNITY_ID
                    join st in db.STATE_PROFILE on co.STATE_CD equals st.STATE_CD
                    where pro_co.PROFILE_NM == authorizedUser.ProfileName

                    select new
                    {
                        COMMUNITY_ID = x.COMMUNITY_ID,
                        COUNTY_ID = x.COUNTY_ID,
                        REALTOR_GROUP_NM = x.REALTOR_GROUP_NM,
                        BUILDING_NAME_TX = x.BUILDING_NAME_TX,
                        ACTIVE_FL = x.ACTIVE_FL,
                        CONSTR_SQFT_AVAIL_NB = x.CONSTR_SQFT_AVAIL_NB,
                        TRANS_RAIL_FL = x.TRANS_RAIL_FL,
                        LAST_UPDATED_DT = x.LAST_UPDATED_DT,
                        CREATED_DATE = x.CREATED_DATE,
                        BUILDING_ADDRESS_TX = x.BUILDING_ADDRESS_TX,
                        BUILDING_ID = x.BUILDING_ID,
                        COMMUNITY_NM = co.COMMUNITY_NM,
                        IMAGECOUNT = x.BUILDING_IMAGE2.Count(),
                        StateCode = st.STATE_NM,
                        BuildingTypeItems = x.BUILDING_TYPE_ITEM,
                        BuildingZoningItems = x.BUILDING_ZONING_ITEM,
                        BuildingSpecFeatures = x.BUILDING_SPEC_FEATURE_ITEM,
                        buildingHide = x.BUILDING_HIDE,
                        buildinghideSort = x.BUILDING_HIDE.Count(y => y.PROFILE_NM == ProfileName) > 0 ? 1 : 0,
                        BUILDING_CITY_TX = x.BUILDING_CITY_TX,
                        BUILDING_ZIP_TX = x.BUILDING_ZIP_TX,
                        LPF_GENERAL_DS = x.LPF_GENERAL_DS,
                        CONSTR_SQFT_TOTAL_NB = x.CONSTR_SQFT_TOTAL_NB,
                        CONSTR_STORIES_NB = x.CONSTR_STORIES_NB,
                        CONSTR_CEILING_CENTER_NB = x.CONSTR_CEILING_CENTER_NB,
                        CONSTR_CEILING_EAVES_NB = x.CONSTR_CEILING_EAVES_NB,
                        DESCR_EXPANDABLE_FL = x.DESCR_EXPANDABLE_FL,
                        CONSTR_MATERIAL_TYPE_TX = x.CONSTR_MATERIAL_TYPE_TX,
                        SITE_ACRES_SALE_NB = x.SITE_ACRES_SALE_NB,
                        DESCR_PREVIOUS_USE_TX = x.DESCR_PREVIOUS_USE_TX,
                        CONSTR_YEAR_BUILT_TX = x.CONSTR_YEAR_BUILT_TX,
                        DESCR_SUBDIVIDE_FL = x.DESCR_SUBDIVIDE_FL,
                        LOCATION_CITY_LIMITS_FL = x.LOCATION_CITY_LIMITS_FL,
                        TRANS_INTERSTATE_NEAREST_TX = x.TRANS_INTERSTATE_NEAREST_TX,
                        TRANS_INTERSTATE_MILES_NB = x.TRANS_INTERSTATE_MILES_NB,
                        TRANS_HIGHWAY_NAME_TX = x.TRANS_HIGHWAY_NAME_TX,
                        TRANS_HIGHWAY_MILES_NB = x.TRANS_HIGHWAY_MILES_NB,
                        TRANS_AIRPORT_COM_NAME_TX = x.TRANS_AIRPORT_COM_NAME_TX,
                        TRANS_AIRPORT_COM_MILES_NB = x.TRANS_AIRPORT_COM_MILES_NB,
                        UTIL_ELEC_SUPPLIER_TX = x.UTIL_ELEC_SUPPLIER_TX,
                        UTIL_GAS_SUPPLIER_TX = x.UTIL_GAS_SUPPLIER_TX,
                        UTIL_WATER_SUPPLIER_TX = x.UTIL_WATER_SUPPLIER_TX,
                        UTIL_SEWER_SUPPLIER_TX = x.UTIL_SEWER_SUPPLIER_TX,
                        UTIL_PHONE_SVC_PVD_TX = x.UTIL_PHONE_SVC_PVD_TX,
                        CONTACT_ORGANIZATION_TX = x.CONTACT_ORGANIZATION_TX,
                        CONTACT_PHONE_TX = x.CONTACT_PHONE_TX,
                        CONTACT_EMAIL_TX = x.CONTACT_EMAIL_TX,
                        TERMS_SALE_PRICE_TX = x.TERMS_SALE_PRICE_TX,
                        TERMS_LEASE_SQFT_NB = x.TERMS_LEASE_SQFT_NB
                    };
有一段代码将动态where和sort子句添加到查询中,但我忽略了这些。无论where和sort中有什么内容,查询都需要大约4秒钟的时间运行

我在Oracle中删除了生成的SQL,并且解释计划似乎没有显示任何让我大吃一惊的内容。费用是1554英镑

如果这是不允许的,我道歉,但我似乎找不到一个好的方式来分享这些信息。我已将Sql Developer生成的解释计划上载到此处:

表格布局

Building
--------------------
- BuildingID
- CommunityId
- Lots of other columns

Profile_Community
-----------------------
- CommunityId
- ProfileNM
- lots of other columns

state_profile
---------------------
- StateCD
- ProfileNm
- lots of other columns

Profile
---------------------
- Profile-NM
- a few other columns
所有列分配的表都有120-150列。实体似乎正在生成一个select语句,从每个表中提取每一列,而不仅仅是我想要的列

困扰我的问题是,在我的LINQ中,我选择了50项,但生成的sql返回677列。我想返回这么多的专栏可能是我反应迟钝的原因


你知道为什么SQL中会返回这么多列,或者如何加快查询速度吗?

我怀疑某些性能会受到对象创建的影响。尝试在不使用基本select x的情况下运行查询,看看是SQL查询需要时间还是对象创建需要时间


另外,如果生成的查询太复杂,您可以尝试将其分离为更小的子查询,从而逐渐丰富对象,而不是一次查询所有内容。

我创建了一个视图,让视图只选择我想要的列,并连接需要在linq中保持连接的内容


EF从您试图连接的每个表中选择每一列,这是非常恼人的。但我想我之所以注意到这一点,是因为我加入了一组包含150多列的表

什么是表结构和索引以及解释计划?大多数查询都不可能在没有的情况下进行有效的调试。第二,如果这看起来有点差劲,我很抱歉,但1554的成本并没有在应用程序中对你大喊大叫?这是一个简单的查询,花费20英镑可能会让你大吃一惊。我会考虑添加表结构,并计划添加到我的问题中。你知道从sql开发者那里拿出解释计划的好方法吗?我想屏幕截图是最简单的方法。。。编辑窗口中有一个图像上传按钮。或者有。每个表中的每一列,而不仅仅是我想要的,这很奇怪。你确定在你遗漏的部分没有收费表吗?那会很难,因为where子句块很长,但我会在早上试一试。谢谢你的主意!