我有一个表需要查询,然后根据列值将返回的对象组织成两个不同的列表.我可以查询一次表,检索用于区分对象的列,并通过循环遍历结果集来排列它们,或者我可以使用两个不同的条件查询两次并避免排序过程.哪种方法一般更好的做法?
MY_TABLE
NAME AGE TYPE
John 25 A
Sarah 30 B
Rick 22 A
Susan 43 B
Run Code Online (Sandbox Code Playgroud)
或者SELECT * FROM MY_TABLE,然后根据返回的类型对代码进行排序,或者
SELECT NAME, AGE FROM MY_TABLE WHERE TYPE = 'A' 其次是
SELECT NAME, AGE FROM MY_TABLE WHERE TYPE = 'B'
从逻辑上讲,来自 Java 代码的数据库查询将比代码中的循环更昂贵,因为查询数据库涉及多个步骤,例如连接到数据库、创建 SQL 查询、触发查询并获取结果。
此外,在触发第一个和第二个查询之间可能会出现问题。
通过优化的单个查询和循环代码,您可以比触发两个查询节省大量时间。
对于您的情况,如果有帮助,您可以对查询本身进行排序:
SELECT * FROM MY_TABLE ORDER BY TYPE
Run Code Online (Sandbox Code Playgroud)
将来,如果有更多类型添加到表中,您不需要触发额外的查询来检索它。