sql-server – SQL Server标量函数与子查询执行计划分析
发布时间:2020-05-23 05:46:35 所属栏目:MsSql 来源:互联网
导读:任何人都可以帮助我理解以下查询的SQL Server执行计划吗? 我希望子查询版本(查询2)执行得更快,因为它是基于集合的.这似乎是独立运行查询时的情况 – 稍微 – 但执行计划显示查询成本分别为15%和85%: //-- Query 1 (15%) - Scalar FunctionSELECT gi.Galle
|
任何人都可以帮助我理解以下查询的SQL Server执行计划吗? 我希望子查询版本(查询2)执行得更快,因为它是基于集合的.这似乎是独立运行查询时的情况 – 稍微 – 但执行计划显示查询成本分别为15%和85%: //-- Query 1 (15%) - Scalar Function
SELECT
gi.GalleryImageId,gi.FbUserId,dbo.GetGalleryImageVotesByGalleryImageId(gi.GalleryImageId) AS Votes
FROM
GalleryImage gi
//-- Query 2 (85%) - Subquery
SELECT
gi.GalleryImageId,(SELECT COUNT(*) FROM GalleryImageVote WHERE GalleryImageId = gi.GalleryImageId)
FROM
GalleryImage gi
我在这里想念的是什么;执行计划是否会跳过功能的成本?此外,有关CTE或OVER / PARTITION查询是否更好地提供上述任何一项的任何建议? 先感谢您! 解决方法永远不要相信执行计划.让您了解计划是什么非常有用,但如果您想要真正的指标,请始终打开统计数据 set statistics io on set statistics time on ..并比较实际执行情况.统计数据可能会说预期为15%/ 85%,但实际情况会显示实际转化为什么. 性能调整没有灵丹妙药.随着数据的形状或分布发生变化,即使“最佳”查询也会随着时间而变化. CTE不会有太大的不同,我不确定您打算如何对此进行PARTITION查询,但您可以尝试左连接表单. SELECT
gi.GalleryImageId,count(v.GalleryImageId) AS Votes
FROM
GalleryImage gi
LEFT JOIN GalleryImageVote v ON v.GalleryImageId = gi.GalleryImageId
GROUP BY
gi.GalleryImageId,gi.FbUserId (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- sql-server – T-SQL:如何在存储过程中创建一个“私有”函
- sql – INFORMATION_SCHEMA.ROUTINES中SPECIFIC_SCHEMA和RO
- sql-server – 使用HAProxy为镜像SQL Server提供容错功能
- sql-server – 在数据库实例中重新启动数据库而不重新启动整
- 浅谈MySQL中的子查询优化技巧
- CouchDB可以处理数千个独立的数据库吗?
- SQL Server数据库的高性能优化经验总结
- sql-server – 将批量数据索引到ElasticSearch的首选方法?
- sql-server – 无法执行从SonarQube 5.6.1 LTS到6.0的数据库
- SQLServer用存储过程实现插入更新数据示例
推荐文章
站长推荐
- SQL Server sql cast,convert,QUOTENAME,exec
- sql – Postgres替换字符串中的字符
- sql-server – 从非sysadmin域用户拥有的SQL Age
- sql – 我可以漂亮打印DBIx :: Class中的DBIC_TR
- sql-server-2008 – 如何参数化SSIS包中的数据库
- 实体框架 – EF 4.1 CF:CREATE DATABASE权限被拒
- SQL datetime需要读取00:00:00.000
- SQLserver排序规则基本概念探索
- redis实现加锁的几种方法示例详解
- tsql – SQL – CASE STATEMENT – WHEN语句AND语
热点阅读
