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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.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
Sql 可以从表索引中删除旧条目吗?_Sql_Database - Fatal编程技术网

Sql 可以从表索引中删除旧条目吗?

Sql 可以从表索引中删除旧条目吗?,sql,database,Sql,Database,我制作了一个提醒应用程序,它大量写入和读取具有未来日期时间的记录,但较少写入具有过去日期时间的记录。这些提醒由位于的提醒_索引,因此一百万条记录意味着索引上有一百万条记录,但加快了检查必须在下一小时提醒的记录的速度 | uuid | user_id | text | remind_at | ... | ... | ... | | ------- | ------- | ------------ | ------------------- | --- |

我制作了一个提醒应用程序,它大量写入和读取具有未来日期时间的记录,但较少写入具有过去日期时间的记录。这些提醒由位于的
提醒_索引,因此一百万条记录意味着索引上有一百万条记录,但加快了检查必须在下一小时提醒的记录的速度

| uuid    | user_id | text         | remind_at           | ... | ... | ... |
| ------- | ------- | ------------ | ------------------- | --- | --- | --- |
| 45c1... | 23      | Buy paint    | 2019-01-01 20:00:00 | ... | ... | ... |
| 23f1... | 924     | Pick up car  | 2019-02-01 20:00:00 | ... | ... | ... |
| 2d84... | 650     | Call mom     | 2020-03-01 20:00:00 | ... | ... | ... |
| 3f1a... | 81      | Get shoes    | 2020-04-01 20:00:00 | ... | ... | ... |
问题在于性能。一旦数据库变大,检索任何记录都会变得相对缓慢

我正在尝试检查RDBMS提供了一种全自动或半自动的方式,允许更好地检索未来的日期时间,因为过去的日期时间很少被检索或检查

一个我不知道是否存在的简洁解决方案是指示RDBM从索引中删除旧条目。我不知道任何RDBM是否允许这样做,但在中,有一种方法可以使用“部分索引”,但是如果我**在一个包含数百万条记录的表上重新创建索引,会发生什么

一些不符合要求的解决方案:

  • 水平缩放:它会重复相同的问题,
    (n)
    次数
  • 垂直缩放:仍然不能解决问题
  • 切分:可能是,因为每个实例都包含数据库的一部分,但应用程序必须处理“切分键”
  • 两个数据库:好的,一个快,另一个慢。将旧条目移动到“慢实例”(toaster)将手动完成。此外,该应用程序将不得不进行大量修改,以检查两个数据库,因为它不知道它最初在哪里。逻辑大大增加

不管怎么说,关键在于创造未来(或最近的未来)记录在检索时提醒snappier,同时忽略检索旧项的性能。

计划作业每N小时将记录移动到历史记录表?或只查看分区此问题无法回答,因为不知道查询速度变慢及其执行计划。使用索引扫描访问行的速度在很大程度上取决于索引的大小。显示查询、
Show CREATE TABLE和
EXPLAIN SELECT`