6000万条条目,精选某月的条目。如何优化数据库?

2023-12-14

我有一个包含 6000 万条条目的数据库。

每个条目包含:

  • ID
  • 数据源ID
  • 一些数据
  • DateTime

  1. 我需要选择特定月份的条目。每个月包含大约 200 万个条目。

     select * 
       from Entries 
      where time between "2010-04-01 00:00:00" and "2010-05-01 00:00:00"
    

    (查询时间约1.5分钟)

  2. 我还想从给定的 DataSourceID 中选择特定月份的数据。 (大约需要20秒)

大约有 50-100 个不同的 DataSourceID。

有没有办法让它更快?我有什么选择? 如何优化这个数据库/查询?


EDIT:有大约。每秒 60-100 次插入!


要更快地获取特定月份、特定年份的条目 - 您将需要索引time column:

CREATE INDEX idx_time ON ENTRIES(time) USING BTREE;

另外,使用:

SELECT e.* 
  FROM ENTRIES e
 WHERE e.time BETWEEN '2010-04-01' AND DATE_SUB('2010-05-01' INTERVAL 1 SECOND)

...因为 BETWEEN 是包容性的,所以您会在您发布的查询中得到日期为“2010-05-01 00:00:00”的任何内容。

我还想从给定的 DataSourceID 中选择特定月份的数据

您可以为 datasourceid 列添加单独的索引:

CREATE INDEX idx_time ON ENTRIES(datasourceid) USING BTREE;

...或设置覆盖索引以包含两列:

CREATE INDEX idx_time ON ENTRIES(time, datasourceid) USING BTREE;

覆盖索引要求在查询中必须使用最左边的列才能使用索引。在这个例子中,有time首先适用于您提到的两种情况 - datasourceid 不必用于索引即可使用。但是,您必须通过查看 EXPLAIN 输出来测试您的查询,以真正了解什么最适合您的数据以及对该数据执行的查询。

也就是说,索引会减慢 INSERT、UPDATE 和 DELETE 语句的速度。如果列数据具有很少的不同值,则索引不会提供很多价值 - 即:布尔列是索引的糟糕选择,因为基数很低。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

6000万条条目,精选某月的条目。如何优化数据库? 的相关文章

  • PDO SQLSRV 和 PDO MySQL 在获取 int 或 float 时返回字符串

    当您获取时 PDO MS SQL Server 和 PDO MySQL 都会返回一个字符串数组 即使列的 SQL 类型本应是数字类型 例如 int 或 float 我设法解决了这个问题 但我想了解为什么它们一开始就这样设计 是不是因为PDO
  • 如何在SSRS中的表上创建热图?

    如何在 SSRS 中创建这样的内容 颜色将根据行中的值 承销商 从红色变为绿色 所有这些都在一个组中 您可以通过右键单击各个单元格并根据表达式设置填充颜色来完成此操作 In the Image below I ve mistakingly
  • 查询中列的顺序重要吗?

    当从 MySQL 表中选择列时 与表中的顺序相比 选择列的顺序是否会影响性能 不考虑可能覆盖列的索引 例如 您有一个包含行 uid name bday 的表 并且有以下查询 SELECT uid name bday FROM table M
  • SPARK SQL - 当时的情况

    我是 SPARK SQL 的新手 SPARK SQL 中是否有相当于 CASE WHEN CONDITION THEN 0 ELSE 1 END 的内容 select case when 1 1 then 1 else 0 end from
  • 如何在 Laravel 查询中使用多个 OR,AND 条件

    我需要 Laravel 查询帮助 我的自定义查询 返回正确结果 Select FROM events WHERE status 0 AND type public or type private 如何写这个查询Laravel Event w
  • 如何在Oracle中使用Timestamp_to_scn和Scn_to_timestamp?

    我的查询结果是这样的 select cast to date a start time mm dd yyyy hh mi ss pm as timestamp date of call ora rowscn from calling tab
  • 如何将可视选择的文本通过管道传输到 UNIX 命令并将输出附加到 Vim 中的当前缓冲区

    使用 Vim 我尝试将在可视模式下选择的文本通过管道传输到 UNIX 命令 并将输出附加到当前文件的末尾 例如 假设我们有一个 SQL 命令 例如 SELECT FROM mytable 我想做如下的事情
  • 截断 Mysql 表 Cron 作业?

    我在如何使用 cron 作业截断 Mysql 表时遇到了一些麻烦 无论我尝试什么 我似乎都无法让数据库清除表格 感谢您的帮助 mysql uderp example pexample hlocalhost Dexample e TRUNCA
  • 第三个下拉菜单不从数据库填充

    我有以下 Index php
  • Mysql 检索所有有限制的行

    我想检索特定用户的所有行 限制为 0 x 所以我只是想问是否有任何方法可以检索 mysql 中的所有行 而不调用返回 x 的 count id 的方法 而不重载现有函数 该函数在查询中根本没有限制 与我们的 string Relace 功能
  • 如何在Mysql中仅将不同的值从一个表复制到另一个表?

    我有一个大约 2 5GB 的 MySql 数据库 表 A 具有以下列 anoid query date item rank url 我刚刚创建了另一个仅包含列的表 b query and date 我想在查询列中插入所有不同的记录 及其各自
  • 如何在 Visual Studio 中更改 Azure 数据库表的列顺序

    我整个下午都在寻找在 MS Visual Studio 2022 中重新排序 Azure 数据库表列的方法 没有运气 在其他应用程序中 可以通过拖动或剪切和粘贴轻松重新排列列 这里无能为力 此时 我什至不确定可以在 VS 中移动列 我只对
  • MySQL 使用 ALTER IGNORE TABLE 出现重复错误

    我的 MySQL 中有一个有重复项的表 我尝试删除重复项并保留一项 我没有主键 我可以通过以下方式找到重复项 select user id server id count as NumDuplicates from user server
  • MYSQL 区分大小写的 utf8 搜索(使用 hibernate)

    我的登录表具有 utf8 字符集和 utf8 排序规则 当我想要检查用户名并检索该特定用户名的其他信息时 hql 查询会为我提供小写和大写相同的结果 我应该如何处理适用于案例的 HQL 查询 我使用 Mysql 5 和 java hiber
  • SQL 删除表并重新创建并保留数据

    在我们最初的设计中 我们搞砸了表中的外键约束 现在表已充满数据 我们无法在不删除表中所有记录的情况下更改它 我能想到的唯一解决方案是创建一个备份表并将所有记录放在那里 然后删除所有记录 更改表并开始将它们添加回来 还有其他 更好 的想法吗
  • 使用 JSON 参数的 Postgres 批量 INSERT 函数

    这是一个plpgsqlpostgres 的函数9 6 它试图INSERT一行 如果插入没有失败 由于违反键约束 那么它会运行更多命令 CREATE FUNCTION foo int text text RETURNS void AS BEG
  • Apache、PHP 和 MySQL 可移植吗?

    我可以在外部硬盘上运行 Apache PHP 和 MySQL 吗 我需要这个 因为我在不同的地方工作 计算机 有时我没有安装和配置所有使用的应用程序 当然可以 XAMPP http www apachefriends org en xamp
  • MySQL MIN/MAX 所有行

    我有桌子Races与行ID Name and TotalCP 我选择分钟 TotalCP FROM Races 但是我想选择具有最小值的整行 我如何在单个查询中做到这一点 从聚合值获取整行的一般形式是 SELECT FROM Races W
  • Laravel leftJoin 仅右表的最后一条记录

    我是 Laravel 的新手 我有两张桌子 1 产品 2 价格 products id product int p key name varchar prices id price int p key id product int
  • 对多个数据库执行 SQL 查询

    我知道我的帖子与该论坛中的其他帖子的标题非常相似 但我真的找不到我需要的答案 这是我的问题 我的 Windows Server 上运行着 SQL Server 在我的 SQL Server 中 我有大约 30 个数据库 它们都具有相同的表和

随机推荐

  • 禁用的文本框丢失视图状态

    我根据所选的下拉菜单动态生成表单 该表格由字段组成 十进制值的数据输入 几个文本字段 必须在末尾添加所有小数值并用该值更新 Total TextBox 总计文本框被禁用 当用户输入值后单击表单上的 保存 按钮时 除了禁用的文本框之外 整个表
  • Python - Pandas:选择每组的第一个观察结果

    我想使用以下命令将我以前的 SAS 代码改编为 Pythondataframe框架 在 SAS 中 我经常使用这种类型的代码 假设列按 group id 排序 其中 group id 取值 1 到 10 其中每个 group id 有多个观
  • 有没有办法使用 Excel 以编程方式使用动态数据定义表区域?

    我有一张包含表格的工作表 由 jasper 报告查询生成 该表将成为我的数据透视表的来源 数据透视表是使用外部连接 来自 Microsoft Query 创建的 由于需要先定义源表 然后才能在 Micrososft Query 中使用它 所
  • 打开和关闭 mysqli 查询的正确方法

    我有一个简单但令人困惑的问题 特别是对于像我这样自学程序员的人 我已经阅读了 PHP NET 和 MYSQL COM 中的不同文档 它们都解释了如何打开和如何关闭它 但对于这个问题并没有真正的帮助 至少对我来说 我学习的方式如下我需要一个文
  • 按最近日期过滤查询结果

    这段代码 SELECT O896IA VEMPPRSA REG NR O896IA VEMPPRSA DIS NR AS RRDD Mgmt Lvl MGMT LVL Count O896IA VEMPPRSA SYS EMP ID NR
  • 如何在画布上绘制像素字体而不使用抗锯齿

    我有一个像素艺术字体 在 ttf 文件中 我发现它的原始分辨率为 8 像素 CTX font 8px mainfont 当我执行 fillText 时 字体在 Firefox 中显示完美 但在 chrome 中显示模糊 firefox ch
  • 如何在 Linux 中以编程方式检测 IP 地址更改?

    有没有办法使用 C 以编程方式检测 Linux 中本地计算机上的 IP 地址更改 给你 这不需要轮询就可以完成 它只监听 RTM NEWADDR 但如果需要的话应该很容易更改为支持 RTM DELADDR include
  • 通过反射检测本机对象

    我正在使用基于反射的对象翻译器 它基本上循环遍历对象的属性 并将值分配给翻译对象上具有相同名称 类型的属性 对象A Name 乔 翻译为 ObjectB Name 乔 我需要提出一个特殊情况 当属性是自定义类时 例如 对象A 地址 我希望我
  • Bash、grep 在具有指定字符串的两行之间

    Example a43 test1 abc cvb bnm test2 kfo 我需要 test1 和 test2 之间的所有行 普通的 grep 在这种情况下不起作用 你有什么建议吗 打印自test1 to test2 包括触发线 awk
  • Delphi中如何将一个数组附加到另​​一个相同类型的数组?

    如何在不使用迭代语句的情况下将一个数组附加到另 一个相同类型的数组 for or while循环 在德尔福 在最新的 Delphi 版本 XE7 中 您可以使用 运算符或Concat附加数组的例程 Link 官方帮助 没有提到 否则编写您自
  • 如何防止内联函数绑定到旧状态值

    在使用钩子的 React 组件的项目中 我试图了解如何正确避免调用绑定到旧状态值的回调 下面的示例说明了这个问题 但不是我正在处理的代码 import React useState useEffect from react import R
  • Blazor 服务器和实体框架。如何避免对数据库的多次冲突调用

    Summary 在我的 Razor 页面中 单个用户操作会触发两个事件 这些事件会导致对 EF 的调用 从而导致错误 System InvalidOperationException HResult 0x80131509 消息 A 在上一个
  • 限制pytest中要执行的测试用例的数量

    一点背景 我正在使用 Jenkins 执行我的测试用例 我现在正在使用 Jenkins 进行一些 POC 而且 就我而言 有 500 多个测试用例 需要一个小时才能执行 我只想执行一个测试用例 只是为了知道我在执行 Jenkins POC
  • 如何将 datagridview 行添加到 xml 文件?

    我是 c 的初学者 我创建了一个dataGridView1 in a Form我添加了一些行和列 不使用DataSet and Datatable 现在我需要发送数据dataGridView1到一个 xml 文件 xml 文件应该updat
  • OpenStack 中的通知

    我感兴趣的是如何向其他应用程序通知 openstack 中的事件 例如 我不想在我的应用程序中知道 nova 中的实例何时被挂起或恢复 是否有任何网络钩子或类似的东西我可以在哪里获得该信息 我正在查看有关通知的官方文档 但我无法从中得出任何
  • VB.NET 将查询字符串解析为数组

    我有这个字符串 1 True 2 150 minutes 3 True 4 True 5 Continuing to smoke 我怎样才能将它放入数组或对象中 如下所示 1 gt True 2 gt 150 minutes etc 我已经
  • Jfreechart:在 x 轴上显示周数的天数

    我正在使用 JFreeChart 显示一个月中每一天的值 现在我想让我的 x 轴显示一个月中的几周而不是几天 目前 我的图表的 y 轴值是 double x 轴值是 int Timestamp ts a getTimestamp Doubl
  • PDO - 致命错误:在非对象上调用成员函数 fetch() [重复]

    这个问题在这里已经有答案了 如果我尝试运行以下 PHP 代码 我会得到一个 调用非对象上的成员函数 fetch 你知道为什么吗 我在另一个网站上使用相同的代码 它运行得很好
  • z-index 属性不起作用

    嗨 伙计 我有以下代码 当我单击某个按钮时我不会这样做fadeTo只有内容没有 some tag在这种情况下fadeTo涉及 some tag div div div div content width 100 height 100 out
  • 6000万条条目,精选某月的条目。如何优化数据库?

    我有一个包含 6000 万条条目的数据库 每个条目包含 ID 数据源ID 一些数据 DateTime 我需要选择特定月份的条目 每个月包含大约 200 万个条目 select from Entries where time between