我总是听说SQL Server中与数据库无关的函数(例如字符串比较,循环)很慢,因为它是一个数据库。但为什么这些事实使这些方法与完整的编程语言相比呢?为什么SQL Server中非数据库相关的函数非常慢?
2
A
回答
0
因为它们被解释而不是编译成机器/ CPU指令。
1
字符串比较并不比任何已编译的程序慢,但通常比较很多很多字符串(比如表中的每一行),而且速度很慢。
至于循环:数据库不是编译器。它读取你的SQL然后解释它。如果您可以发送编译后的代码并让数据库执行它,则您不会注意到速度差异,但数据库必须一次又一次解释相同的代码。
如果幸运的话,数据库会将一个循环转换为内部形式(字节代码或数据结构),但a)需要更多的时间,而不仅仅是将CPU指向某些代码,以及b)仍然需要运行更多的代码来解释字节码或数据结构。对于循环,它必须评估每一轮的条件。
1
关系数据库经过优化,可以集中处理。任何需要数据库逐行工作的游标或循环或相关子查询都会比较慢,通常很痛苦。用基于代码的代码(数据库被设计为最好处理的类型)代替代码通常会将性能从几小时提高到几毫秒。
相关问题
- 1. 为什么OracleDataAdapter.Fill()非常慢?
- 2. 为什么Spark的show()函数非常慢?
- 3. SQLite数据库插入非常缓慢
- 4. 数据库表删除后非常慢
- 5. 使用SMO从SQL Server收集数据非常慢
- 6. 非常非常慢的SQL Server查询更新
- 7. 在SQL Server数据库中替换非常长的HTML文本
- 8. 代替非常慢的pow()函数
- 9. 星火数据帧计数非常慢
- 10. 同步非数据库SQL Server对象
- 11. 为什么在QueryOver SingleOrDefault非常慢?
- 12. 为什么使用Entity Framework创建MSSQL(Express)数据库非常慢?
- 13. 熊猫read_hdf非常慢的非数字数据
- 14. MYSQL屏蔽更新大数据库上的数据非常慢
- 15. 为什么当显示的行数增加时jqGrid非常慢?
- 16. 非关系型数据库
- 17. Mysql - 聚合函数非常慢
- 18. 非常慢的数据处理
- 19. 在大型数据集上查询Firebase数据库非常慢
- 20. 非常缓慢的数据库服务器的模式
- 21. 为什么我将数据写入java中的文件非常慢
- 22. 非常慢的SQL查询
- 23. 关于数据库/ SQL的非常基本的询问
- 24. 数据导出到Excel非常缓慢
- 25. 为什么非法的参数异常?
- 26. SQL Server数据库日志文件增长非常快
- 27. 企业库登录到数据库非常缓慢
- 28. 数据库升级后水晶报表子报表非常慢
- 29. 在日期的矢量上使用sapply:函数非常慢。为什么?
- 30. 为什么T-SQL中的LAG函数是非确定性的?