SQL代码是否比C#代码快?
几个月前,我开始在这个编程公司工作。他们使用的一个实践是在SQL而不是C#中尽可能多的工作。
所以,让我说我有一个简单的例子来编写一些文件的列表: 是这样的: string SQL = @" SELECT f.FileID,f.FileName,f.FileExtension,'/files/' + CAST(u.UserGuid AS VARCHAR(MAX)) + '/' + (f.FileName + f.FileExtension) AS FileSrc,FileSize= CASE WHEN f.FileSizeB < 1048576 THEN CAST(CAST((f.FileSizeB / 1024) AS DECIMAL(6,2)) AS VARCHAR(8)) + ' KB' ELSE CAST(CAST((f.FileSizeB / 1048576) AS DECIMAL(6,2)) AS VARCHAR(8)) + ' MB' END FROM Files f INNER JOIN Users u ON f.UserID = u.UserID "; // some loop for writing results { // write... // } 更快或更好,这样的东西: string SQL = @" SELECT u.UserGuid,f.FileID,f.FileSizeB FROM Files f INNER JOIN Users u ON f.UserID = u.UserID"; // some loop for writing results { string FileSrc = "/Files/" + result["UserGuid"] + "/" + result["FileName"] + result["FileExtension"]; string FileSize = ConvertToKbOrMb(result["FileSizeB"]); // write... // } 这个特定的代码并不重要(这只是一些基本的例子)…问题是关于这种事情一般来说,最好是在SQL或“正常”代码上加载更多的负载? 解决方法这只是一个糟糕的编程习惯。您应该分离和隔离程序的不同部分,以便将来维护(想想下一个程序员!)性能 许多解决方案的糟糕的DB性能,所以大多数开发人员通常会限制SQL数据库访问到最小的事务可能。理想地,将原始数据转换为人类可读的形式应该在可能的最后一点发生。此外,非格式化数据的内存使用量要小得多,而内存便宜,您不应该浪费它。要缓冲,缓存和传输的每个额外字节都占用时间,并减少可用的服务器资源 例如对于Web应用程序格式化,应由JSON数据包中的本地JavaScript模板完成。这减少了后端SQL数据库和应用程序服务器的工作量,并减少了需要通过网络传输的数据,所有这些都加速了服务器性能 格式化和本地化 许多解决方案对于相同的事务具有不同的输出需求,例如不同的视图,不同的地理位置等。通过将形成嵌入到SQL事务中,您将不得不为每个本地化创建一个新的事务,这将成为一个维护噩梦 还可以将格式化的事务用于API接口,您还需要另外一套API接口的事务,该接口将无格式化 使用c#,您应该使用经过良好测试的模板或字符串处理库,或至少string.Format(),不要使用”运算符与字符串,这是非常慢 分享负载 大多数解决方案都有一个DB的多个客户端,因此客户端格式化负载与多个客户端CPU共享,而不是单个SQL数据库CPU 我非常怀疑SQL比c#快,你应该执行一个简单的基准测试,并在这里发布结果:-) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- Qt5.6.0(32位)编译SQLServer驱动(ODBC)(vs2013)
- sql server启动不了, MSSQL 18052错误: 9003,严重度: 20,
- 总结sqlserver2012删除语法:delete数据表中的某一项内容
- SQLServer的数据库镜像实施笔记
- sql-server – 在哪里可以找到用于学习的数据库调优练习?
- sql-server – 如何从SQL Server中的money数据类型转换?
- 如何将 CSV文件导入到SQL Server数据库
- .net – 用于短语的LINQ2SQL LIKE命令
- SQLServer 表结构相关查询(快速了解数据库)
- tsql – T-SQL:string concat问题