Mic*_*rdt 187
不,我们应该避免持有这种令人难以置信的错误观点的开发者.
在许多情况下,数据库连接比通过客户端完成的任何操作快几个数量级,因为它避免了数据库往返,并且数据库可以使用索引来执行连接.
在我的头脑中,我甚至无法想象一个正确使用的连接比等效的客户端操作慢的单一场景.
编辑:在一些罕见的情况下,自定义客户端代码可以比简单的DB连接更有效地执行操作(请参阅meriton的评论).但这是一个例外.
Mar*_*ell 83
听起来像你的同事会使用无sql文档数据库或键值存储.这些本身就是非常好的工具,非常适合许多问题.
但是,关系数据库经过大量优化以便使用集合.有基于连接的是查询数据的很多,很多方面远远超过许多往返的效率更高.这就是rdbms的多功能性所在.您也可以在nosql存储中实现相同的功能,但是您最终会构建一个适合查询的每种不同性质的独立结构.
简而言之:我不同意.在RDBMS中,连接是基础.如果您不使用它们,则不会将它用作RDBMS.
ric*_*lla 24
不,你不应该.
数据库专门用于处理数据集(显然......).因此,他们在这方面非常有效率.通过在他自己的代码中进行基本上手动连接,他试图接管专门为工作设计的东西的角色.他的代码与数据库中的代码一样高效的可能性非常小.
顺便说一下,没有连接,使用数据库的重点是什么?他也可以只使用文本文件.
MJB*_*MJB 19
如果"懒惰"被定义为想要编写更少代码的人,那么我同意.如果"懒惰"被定义为想要让工具做他们擅长的工作的人,我同意.因此,如果他只是同意Larry Wall(关于优秀程序员的属性),那么我同意他的看法.
Red*_*ain 12
是的你应该.
而且由于性能的原因,你应该使用C++而不是C#.C#适合懒人.
不不不.由于性能原因,您应该使用C而不是C++.C++适合懒惰的人.
不不不.由于性能原因,您应该使用程序集而不是C语言.C适合懒人.
是的,我在开玩笑.你可以在没有连接的情况下制作更快的程序,你可以使用更少的内存而无需连接.但在许多情况下,您的开发时间比CPU时间和内存更重要.放弃一点表演,享受生活.不要为了一点点的表现而浪费你的时间.并告诉他"你为什么不从你的地方到你的办公室直道?"
Pis*_*3.0 11
"这技术上是正确的" - 类似地,SQL数据库是无用的:当你使用一堆CSV文件得到相同的结果并在代码中关联它们时,使用一个是什么意思?哎呀,任何抽象都是为了懒人,让我们回到硬件上的机器代码编程!;)
此外,除了最复杂的情况之外,他的论点是不真实的:RDBMS经过大量优化,可以快速实现JOIN .关系数据库管理系统,对吧?
我工作的最后一家公司也没有使用SQL连接.相反,他们将此工作移至应用层,该应用层旨在水平扩展.此设计的基本原理是避免在数据库层工作.通常数据库成为瓶颈.它比数据库更容易复制应用程序层.可能还有其他原因.但这是我现在可以记得的那个.
是的我同意与数据库完成的连接相比,在应用程序层完成的连接效率低下.更多的网络通信也.
请注意,我没有采取严厉措施来避免SQL连接.
如果没有加入,您如何将订单商品与订单联系起来?这是关系数据库管理系统的重点.没有连接就没有关系数据,您也可以使用文本文件来处理数据.
听起来他不理解这个概念所以他试图让它看起来毫无用处.他认为excel是一个数据库应用程序的人是同一类型的人.愚蠢地告诉他,让他阅读更多有关数据库的内容.通过C#建立多个连接并提取数据和合并数据是错误的做事方式.
我不明白语句"加入SQL是无用的"的逻辑.在处理数据之前过滤和限制数据是否有用?正如您所做的其他响应者已经说过这是数据库引擎所做的,它应该是他们擅长的.
也许懒惰的程序员会坚持使用他们熟悉的技术,并且出于非技术原因而避开其他可能性.
我留给你决定.
让我们考虑一个示例:一张包含发票记录的表格,以及一张包含发票行项目记录的相关表格.考虑客户端伪代码:
for each (invoice in invoices)
let invoiceLines = FindLinesFor(invoice)
...
Run Code Online (Sandbox Code Playgroud)
如果您有100,000个发票,每个发票10行,此代码将从100万个表中查找10个发票行,并且它将执行100,000次.随着表格大小的增加,选择操作的数量增加,并且每个选择操作的成本增加.
如果您有几千条或更少的记录,那么计算机速度很快,您可能不会注意到两种方法之间的性能差异.因为成本增加超过线性,随着记录数量的增加(比如数百万),您将开始注意到差异,随着数据集大小的增加,差异将变得不那么容忍.
然而,加入.将使用表的索引并合并两个数据集.这意味着您有效地扫描第二个表一次而不是随机访问N次.如果定义了外键,则数据库已在内部存储的相关记录之间具有链接.
想象一下你自己做这件事.您有一个按字母顺序排列的学生名单和一份包含所有学生成绩报告的笔记本(每个班级一页).笔记本按学生的名字按顺序排序,顺序与列表相同.你想怎么样?
要么:
听起来像是" 我能写得更好 " 的经典案例.换句话说,他看到了一些他认为是颈部疼痛的东西(在SQL中编写了一堆连接)并且说"我确信我可以写得更好并获得更好的性能." 你应该问他是否a)更聪明,b)比那些深入Oracle或SQL Server优化代码的典型人更受教育.可能性不大.
归档时间: |
|
查看次数: |
7319 次 |
最近记录: |