首页 > 解决方案 > 表的列中的所有值都可以无限制吗?

问题描述

我正在尝试通过查询获取客户使用的产品的产品 ID,

select
   v.product_id
from
  TableA as v
join
  TableB as f
on
  v.id = f.id
where
    f.product_name = "<some_name>"
  and
    f.customer_id = "<id>"

注意:product_id 是 TableA 的主键

匹配条件的行可能太多,在最坏的情况下,它可能是表中列的整个值。

可以在没有任何限制运算符的情况下执行查询吗?当获得的结果集太大时,我如何知道我运行的查询是安全的(即不产生 OOM 类问题)?

编辑

这是我getMySQLConnection的代码的一部分

String url = "jdbc:mysql://" + host + ":" + port + "/" + dbname; 
String clazz = "org.gjt.mm.mysql.Driver"; 
Driver driver = (Driver) Class.forName(clazz).newInstance();
DriverManager.registerDriver(driver);
return DriverManager.getConnection(url, user, pwd);

诸如GET可以传输大约 2-8kb 的请求之类的东西(据我所知)。可以通过此 url 连接传输的最大数据大小(即结果集数据)是多少?

标签: mysql

解决方案


您不应该在查询中使用限制。否则,您将无法获得整个产品列表。只有当您的网站上只有一位客户时才会发生最坏的情况。


推荐阅读