Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我在哪里分类?_Java_Sql_Mysql_Sorting - Fatal编程技术网

Java 我在哪里分类?

Java 我在哪里分类?,java,sql,mysql,sorting,Java,Sql,Mysql,Sorting,我有一个数据库,我查询,我不确定在哪里执行结果排序,到目前为止,我有以下选项 在MySQL查询中 在列表级别(使用LinkedList) 在显示结果之前使用比较器对未排序的列表进行排序(基本上在jsp中) 列表由ObjectDTO组成,因此在哪里更有效。有什么想法吗?数据库。使用索引和有关数据的其他信息,db在这方面非常擅长。如果可能,您应该在数据库中进行排序 数据库可以使用索引。如果有合适的索引可用,则可以按排序顺序从磁盘读取结果,从而提高性能-不需要额外的O(n log(n))排序步骤

我有一个数据库,我查询,我不确定在哪里执行结果排序,到目前为止,我有以下选项

  • 在MySQL查询中
  • 在列表级别(使用LinkedList)
  • 在显示结果之前使用比较器对未排序的列表进行排序(基本上在jsp中)

列表由ObjectDTO组成,因此在哪里更有效。有什么想法吗?

数据库。使用索引和有关数据的其他信息,db在这方面非常擅长。

如果可能,您应该在数据库中进行排序

  • 数据库可以使用索引。如果有合适的索引可用,则可以按排序顺序从磁盘读取结果,从而提高性能-不需要额外的O(n log(n))排序步骤
  • 如果您只需要第一个
    x
    结果,您还可以最小化数据传输(减少网络传输,如果有合适的索引,还可以减少磁盘访问)

    • 最好是在mySQL查询中

      a) 这很容易做到

      b) 如果使用索引,则在创建索引或自动插入新行时进行排序(有时索引需要重新组织,但这是db admins的日常事务。如果表非常大,则适用此操作)

      e) 如果索引包含where子句中使用的列,则通常访问速度更快

      d) 您无需每次都阅读整张表即可自行排序

      e) 即使没有索引,我相信DB也能做得最好


      希望对您有所帮助

      注意,您通常希望避免JSP文件中的Java代码。因此,最后一点最好是“基本上在servlet中”。那么我应该使用LinkedList来保持插入顺序吗?@Triztian:an
      ArrayList
      更适合快速检索。
      LinkedList
      的删除速度更快(如果唯一的目的是显示结果,则不需要)。嗯,我不知道,我读过关于列表和集合的界面和摘要,但有时会混淆,所以,简而言之,这就是我想做的。查询数据库,如下所示:
      SELECT*FROM order WHERE user='triztian'order BY'mycolumn'ASC然后,我将结果集字段映射到一个DTO对象,然后将DTO对象插入一个列表,最后我想显示该列表,该列表保留插入元素的顺序。@Mark Byers,关于第2点:不仅仅是数据传输——如果有一个可以使用的索引,那么它会直接减少I/O操作——您可能会多次减少查询执行时间=巨大的胜利(另外,它会将传输最小化)。