sql - 优化 SQL 中不断增加的键
问题描述
问题本身很简单:
- 我有大量的时间戳和值对
- 除少数例外 (<1%) 的时间戳不断增加且独一无二
- 我使用时间戳作为聚集索引
我怎样才能强制数据库系统尝试将值插入到末尾,如果它失败(没有在 B 树中最右边(大边),可以检查 const time),然后才进行二进制搜索正确的位置?
目标系统:MSSQL 2016 或 2017
解决方案
要么你想timestampt
成为一个聚集索引,要么你不想。没有“中途”聚集索引。
因此,如果您希望它聚集在一起,请在每个页面上留出额外的空间,以防以后插入新值。您可以通过使用fill_factor
(在此处记录)来控制它。这允许聚集索引(更)有效地插入不在末尾的值。
如果您不希望在 上使用聚集索引timestampt
,请使用identity
列来标识每一行。这将确保仅在表的“末尾”(即最后一页)插入行,从而提高插入效率。您仍然可以使用常规索引以timestampt
进行有效访问。
其实我更喜欢第二种方法。我会担心 中的重复timestampt
,我更喜欢有一个唯一标识每一行的聚集索引。
推荐阅读
- c++ - 如何将 sf::RenderWindow 传递给另一个函数?
- c++ - 尝试使用 QNetworkAccessManager get() 而不是 QNetworkAccessManager post() 发送文件
- ios - 如何在uipageviewcontroller swift中转换时隐藏导航栏
- java - 我对封装应该如何工作感到困惑
- react-native - 如何将 TextInput 值从 React Navigation 组件向上传递到我的主应用程序
- java - 获取 selenium 支持 pagefactory DefaultElementLocator findElement nullpointerexception for driver
- javascript - 如何防止自动提交表单
- r - 仅增加表达式上标文本的字体大小
- sql - 从另一个过程调用存储过程
- html - 悬停在图像/文本上的效果(网络)