当前位置: 首页 > 面试题库 >

位图堆扫描性能

松嘉颖
2023-03-14
问题内容

我有一张大桌子。位图堆扫描步骤需要5秒钟以上。

有什么我可以做的吗?我在表中添加了列,对它使用的索引重新索引会有所帮助吗?

我对数据进行合并和求和,所以我不会将50万条记录返回给客户端。
我使用postgres 9.1。
这里的解释:

 Bitmap Heap Scan on foo_table  (cost=24747.45..1339408.81 rows=473986 width=116) (actual time=422.210..5918.037 rows=495747 loops=1)
   Recheck Cond: ((foo_id = 72) AND (date >= '2013-04-04 00:00:00'::timestamp without time zone) AND (date <= '2013-05-05 00:00:00'::timestamp without time zone))
   Filter: ((foo)::text = 'foooooo'::text)
   ->  Bitmap Index Scan on foo_table_idx  (cost=0.00..24628.96 rows=573023 width=0) (actual time=341.269..341.269 rows=723918 loops=1)

询问:

explain analyze
SELECT CAST(date as date) AS date, foo_id, ....
from foo_table
where foo_id = 72
and date >= '2013-04-04'
and date <= '2013-05-05'
and foo = 'foooooo'

Index def:
Index "public.foo_table_idx"
   Column    |            Type
-------------+-----------------------------
 foo_id      | bigint
 date        | timestamp without time zone

 btree, for table "public.external_channel_report"

表格:
footext具有4个不同值的字段。
foo_id目前bigint具有10K个不同的值。


问题答案:

(foo_id, foo, date)(按此顺序)上创建一个复合索引。

请注意,如果您选择500k条记录(并将它们全部返回给客户端),这可能会花费很长时间。

您确定您需要客户端上的所有500k记录(而不是某种汇总或LIMIT)吗?



 类似资料:
  • 我对DynamoDB的性能有问题,我想澄清一下我有点困惑的地方。 执行扫描表中的100条记录,条件是使用(例如)。如果在表中找到20条记录,DynamoDB是否还扫描其他80条记录? 扫描时分页是如何工作的? 消耗超过分配的RCU和WCU的后果是什么?

  • 在上一章中,Nexpose已成功安装。让我们看看如何运行它以及该工具的功能。Nexpose使用自己的数据库,所以我们要做的第一件事是关闭Kali Linux的数据库。如果两个数据库都在同一个端口上运行,它们就会相互冲突。现在,我们停止postgresql服务。应该记住,在运行Nexpose之前,需要关闭数据库。停止数据库的命令如下: 现在,我们进入到安装Nexpose的位置。除非在安装过程中更改了

  • 在这一章节中,我们将使用在安装工具时设置的用户名和密码登录。在上面的屏幕截图中显示了Metasploit社区的Web界面: 登录后,我们可以访问该帐户并转到用户设置或注销。还可以检查软件更新。 当我们第一次登录时,它会要求我们输入激活密钥。激活密钥将发送到下载工具时输入的电子邮件地址。我们应该确保在下载工具时输入有效的电子邮件地址。 接下来开始创建扫描,我们将点击Project | New Pro

  • 我应该在属性文件中添加什么以便它包括。模块文件?

  • 问题内容: 试图使用像ZXing,ZBar和它们的fork之类的几个库,但是找不到从相机而不是从文件扫描条形码的方法。 有人可以指出我正确的方向吗?最好是我正在研究ZXing:如何从文件(而不是相机)扫描图像。 请。 问题答案: 最后,我找到了解决方案。代码是(源自此处): Gradle引用为: 用法:

  • 我需要在一种方法中将文件名作为扫描仪的输入,并在所有其他方法中将该扫描仪用作其余代码的文件路径的引用。 我正在学习文件I/o,对于这个项目,我应该以文件名作为输入,计算文件中的行数,并将每行放入一个数组中。 我的问题出现在FileUtils期间。countRecords方法。在FileUtils中返回文件类型后。打开输入文件(openInputFile),然后将数据放入扫描仪(代码中的变量inf和