postgresql - 如何从具有大量记录的表中选择唯一记录
问题描述
我使用 postgresql,我有一个包含超过 500 万条记录的数据库表。表结构如下:
每天都会插入很多记录。有很多相同的记录reference
。
我想选择所有记录,但我不希望重复,具有相同参考的记录。
我尝试查询如下:
SELECT DISTINCT ON (reference) reference_url, reference FROM daily_run_vehicle WHERE handled = False and retries < 5 ORDER BY reference DESC;
它执行了,它给了我正确的结果,但是执行需要很长时间。
有没有更好的方法来做到这一点?
解决方案
- 在您在 where 条件中使用的列上创建排序键
- 将大数据移动到表中后,我们需要执行“vacuum”命令,它将刷新所有键,然后使用“Analyze”命令分析表。它将有助于重建表的统计信息。
推荐阅读
- c# - Unity 游戏在 IOS 上崩溃,但在 Android 上完美运行
- git - 如何挑选提交 OUT
- angular - 角度传递组件到组件作为参数
- oracle - Pragma UDF 是如何工作的?
- javascript - Outlook JS 加载项:使用 Ajax 和回调令牌的 EWS 调用
- vba - " 从 MS Word 表中提取单词时添加到字符串的开头
- regex - Regexmatch syntax for Google Sheets
- css - Bootstrap 4 Carousel how to get controls in slide and responsive
- html - Position and Size
- php - A Database Error Occurred Error Number: 1054 Unknown column 'Array' in 'where clause'