我在网上搜索了一下如何将JDBC调用传输到数据库管理系统。我想知道的是,即使数据库是本地的,JDBC调用是否会产生网络流量以便与DBMS通信?
我需要争论为什么两个单独的SQL SELECT
语句比具有JOIN
的单个语句更昂贵。
答案 0 :(得分:2)
简单的答案是使用JDBC驱动程序。
驱动程序依赖于平台,因为它依次使用ODBC 依赖于底层操作系统JVM的本机库 正在奔跑。此外,使用此驱动程序会导致其他安装 依赖;例如,必须在计算机上安装ODBC 拥有驱动程序和数据库必须支持ODBC驱动程序。该 如果替代纯Java,则不鼓励使用此驱动程序 司机可用。另一个含义是任何应用程序 使用类型1驱动程序是不可移植的,因为它之间的绑定 驱动程序和平台。这项技术不适合 高交易环境。 Type 1驱动程序也不支持 完整的Java命令集并受到其功能的限制 ODBC驱动程序。
点击this
了解详情我需要争论为什么两个separeat SQL SELECT语句更多 比使用JOIN的SQL单一昂贵。
我想说它可能取决于场景。虽然据说JOIN
几乎总会有更好的表现。但您仍然可以找到某些情况(尽管很少),其中SELECT
语句是首选。
在大多数情况下,我们可以说Join
通常会胜过多个单一SELECTS,因为它使数据库能够进行大量优化,因为通过使用JOIN可以减少开销并且知道它有多少个表需要扫描
答案 1 :(得分:1)
在任何情况下,与计算查询/查询结果并将其传递回应用程序的成本相比,将查询传递到数据库服务器的成本可以忽略不计。
正如@RahulTripathi所提到的,根据情景,最新的考虑因素可以决定你想要走哪条路。通常,经验法则是让数据库做它擅长的事情:选择,投影和连接。
虽然在某些情况下你可能确实想要做两个单独的选择。例如,如果以数据库设计者未预料到的方式连接表(在不是外键的列和/或不是主键或甚至没有索引的列上),则数据库是“非常忙碌“,你可能会更好的选择2。
如果将大型表连接到具有大量字段的小型表,则可能需要将查询拆分为两个,尤其是在第二个表未进行大量更改的情况下。在这种情况下,您可以更进一步:您可以缓存第二个表中的记录,只查询第一个表。
但是,正如我上面所说,你需要一个很好的理由不使用单个SELECT查询。