SQL 耗时优化
Ø 简介
在平常的开发中,我们经常会编写各种各样的 SQL 语句,比如:SQL 查询、存储过程、或者视图查询等。当我们编写的 SQL 语句比较复杂,或者表的数据量比较大,导致查询超时!这时,就要去分析我们的 SQL 语句,导致耗时较长的原因,从而优化我们的 SQL 语句。
说明:本文仅为笔者所思、所想、所写,有用之处欢迎借鉴,不对之处欢迎指出。
1. 内连接查询中,子查询(关联相同的两张表)使用 TOP 子句解决耗时
1) LINQ 语句
var datas = (from t1 in DataContext.Orders
join t3 in DataContext.UserInfoes on t1.UserId equals t3.id
join t5 in DataContext.Customers on t3.CustomerId equals t5.Id
join t7 in (from t1 in DataContext.CateringCategorys
join t3 in DataContext.CateringCategorys on t1.CategoryId equals t3.ParentId
where t1.Level == 1
select new
{
CategoryId1 = t1.CategoryId,
CategoryId2 = t3.CategoryId
}) on t5.TradeType equals t7.CategoryId2
where 1 == 1
&& (cityId == 0 || t1.CityId == strCityId)
&& t1.OrderStatusId >= (int)OrderStates.Undelivered && t1.OrderStatusId < (int)OrderStates.Cancelled
&& t1.PayStatusId != (int)OrderPayStates.Unpaid
&& (t1.PayTime >= startDate && t1.PayTime < endDate)
select new
{
CategoryId = t7.CategoryId1,
OrderId = t1.Id,
t1.RealTotal,
t3.CustomerId
}).ToArray();
2) 生成 SQL(sp_executesql 转换后的同等 SQL 语句)
SELECT
记录。
2) 在关联的第二个 Crm_CateringCategory 表上再派生一层,再关联外层 Crm_CateringCategory 表,并只输出所需字段?结果还是不行!
3) 因为关联的是相同的表?对的,就是这个原因!因为,尝试创建与 CateringCategory 相同的另一张表 CateringCategory_1 去关联查询,耗时问题就解决了。
4) 为什么呢,表上加 (NOLOCK) 关键字也不管用,原因不祥(如有博友们知道,欢迎指出)!
4. 然后,笔者又尝试在这个子查询上加上 TOP 子句,结果执行耗时变为了 00:00:00.740,耗时问题同样解决了。因为开发中,不可能再去创建一张相同的一张表。(Linq 只需加上 Take() 方法即可)。
SQL 耗时优化的更多相关文章
- 深入SQL Server优化【推荐】
深入sql server优化,MSSQL优化,T-SQL优化,查询优化 十步优化SQL Server 中的数据访问故事开篇:你和你的团队经过不懈努力,终于使网站成功上线,刚开始时,注册用户较少,网站性 ...
- SQL性能优化前期准备-清除缓存、开启IO统计
文章来至:https://www.cnblogs.com/Ren_Lei/p/5669662.html 如果需要进行SQl Server下的SQL性能优化,需要准备以下内容: 一.SQL查询分析器设置 ...
- 转:sql语句优化
性能不理想的系统中除了一部分是因为应用程序的负载确实超过了服务器的实际处理能力外,更多的是因为系统存在大量的SQL语句需要优化. 为了获得稳定的执行性能,SQL语句越简单越好.对复杂的SQL语句,要设 ...
- SQL Server优化的方法
SQL Server优化的方法<一> 查询速度慢的原因很多,常见如下几种: 1.没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷) 2.I/O吞吐量小,形成了 ...
- Sql server2005 优化查询速度50个方法小结
Sql server2005 优化查询速度50个方法小结 Sql server2005优化查询速度51法查询速度慢的原因很多,常见如下几种,大家可以参考下. I/O吞吐量小,形成了瓶颈效应. ...
- sql语句优化 (转)
性能不理想的系统中除了一部分是因为应用程序的负载确实超过了服务器的实际处理能力外,更多的是因为系统存在大量的SQL语句需要优化. 为了获得稳定的执行性能,SQL语句越简单越好.对复杂的SQL语句,要设 ...
- [转]sql语句优化原则
性能不理想的系统中除了一部分是因为应用程序的负载确实超过了服务器的实际处理能力外,更多的是因为系统存在大量的SQL语句需要优化. 为了获得稳定的执行性能,SQL语句越简单越好.对复杂的SQL语句,要设 ...
- sql server 数据分析优化实战(一)——SQL语句优化
前言 在我们进行数据分析的时候,首要的目标是根据业务逻辑,通过编写SQL代码得到我们想要的结果,这是毋庸置疑的.一般情况下,由于我们分析的数据量比较少,体会不出SQL语句各种写法的性能优劣,对SQL代 ...
- 重新学习MySQL数据库12:从实践sql语句优化开始
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/a724888/article/details/79394168 本文不堆叠网上海量的sql优化技巧或 ...
随机推荐
- svn + nginx unit + python3自动化发布web服务方法
本周将python web服务管理更换成nginx unit以后发现接口性能有了明显的提升,访问速度快了不少.不过有个很大的问题就是使用svn自动化发布以后,服务并没有刷新使用新的代码运行,而又不懂得 ...
- XMind 8 Pro 破解
1.补丁下载地址 链接:https://pan.baidu.com/s/146qcwkvOGCAneIXabSZSUA 提取码:wygs 2.安装 XMind 8 Pro, 运行 3. 去除检查 ...
- dicom错误解决
https://github.com/pydicom/pydicom/issues/331 sudo apt-get install python-gdcm
- 五 Struts 配置文件
一.struts.xml详解1.package:包 属性:name=命名 namespace=在action访问路径前面加的前缀 extends=继承另外的包 action:name=action的访 ...
- windows 10隐藏各种文件夹
1.windows键+R打开运行,或者Ctrl+Alt+Del键调出任务管理器--文件--运行新的任务,然后出入"regedit"打开注册表: 2.按目录找到:[-HKEY_CLA ...
- 逆向-攻防世界-no-strings-attached
看题目就知道查找不到关键字符串,为防止踩坑,strings命令查看,没有找到有用的字符串.IDA载入程序查找入口函数, main函数中有4个函数,经过分析判断authenticate()为关键函数,跟 ...
- Java设置session超时(失效)的时间
在一般系统登录后,都会设置一个当前session失效的时间,以确保在用户长时间不与服务器交互,自动退出登录,销毁session具体设置的方法有三种:1.在web容器中设置(以tomcat为例)在tom ...
- button JS篇ant Design of react之二
最近更新有点慢,更新慢的原因最近在看 <css世界>这本书,感觉很不错 <JavaScript高级程序设计> 这本书已经看了很多遍了,主要是复习前端的基础知识,基础知识经常会过 ...
- Python--day12(三元表达式、函数对象、名称空间与作用域、函数嵌套定义)
今日主要内容 1. 函数默认值细节(*) 2. 数据类型补充:三元表达式.列表推导式.字典推导式 (***) 3. 函数对象:函数名的各种应用场景 (*****) 4. 名称空间与作用域:解释 ...
- mysql 新建用户并赋予远程访问权限
不多说直接上代码 [root@demo /]# mysql -u root -p #登录服务器数据库 Enter password:123xxx #1.创建一个新用户 testuser 密码为 tes ...