【问题标题】:How to fetch thousands of data from database without getting slow down?如何在不减慢速度的情况下从数据库中获取数千条数据?
【发布时间】:2015-08-07 13:43:54
【问题描述】:

我想要文本框中的自动搜索选项,并且数据正在从数据库中获取。我的数据库表中有数千条数据(几乎 8-10000 行)。我知道如何实现这一点,但是由于我要获取数千个数据,因此需要花费大量时间来获取。如何在不减速的情况下实现这一目标?除了简单的获取方法之外,我是否应该遵循任何其他方法来实现这一点?我正在为数据库使用 Oracle SQL Developer。

【问题讨论】:

  • 您已经在使用DISTINCT 了吗?或者你可以简单地LIMIT返回的行数
  • 在文本框中使用自动搜索来查询 10,000 行似乎不是一个好主意。这是否意味着只要用户键入一个字母,例如"a" 您会立即显示您匹配的列中所有具有 "a" 的行,还是什么?

标签: database oracle methodology


【解决方案1】:

除了涉及索引和缓存的显而易见的解决方案之外,如果这是 Web 技术并且根据您的工具,您有时可以在进行服务器调用之前设置最小长度。这是一个 jquery UI 示例:https://api.jqueryui.com/autocomplete/#option-minLength

“在执行搜索之前用户必须输入的最小字符数。零对于只有几个项目的本地数据很有用,但是当单个字符搜索可以匹配几千个项目时,应该使用更高的值。 "

【讨论】:

    【解决方案2】:

    这取决于您的网络界面,但您可以使用两种技术:

    1. 对数据进行分页:如果您的要求是接受空值并显示所有结果,则将它们加载到预定义大小的块中。护目镜例如分页搜索结果。在 Oracle 上,使用 rownum 特殊变量进行分页(请参阅this response)。注意:您必须首先发出一个带有 order by 的查询,然后将其包含在一个使用 rownum 的新查询中。使用 limit 关键字的其他数据库的行为方式不同。如果您将分页技术应用于下拉菜单,您最终会得到无限滚动(例如,请参阅 this response)
    2. 限制你的数据施加一些限制返回行数的过滤器;只有在用户在字段中输入至少 n 个字符后,您的搜索才会显示一些结果

    您可以组合 1 和 2,但除非您找到现有的 Web 组件(例如 jquery 组件),否则如果您没有 Javascript 知识,这可能是一项艰巨的任务。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-01-11
      • 1970-01-01
      • 1970-01-01
      • 2017-01-22
      • 1970-01-01
      • 2018-04-01
      • 2014-05-22
      相关资源
      最近更新 更多