如何实现仅对部分数据构建索引?

yzsDBA
关注

索引会占用比想象中的还要大的空间,有好几次我向表中添加索引以增加速度,但是对磁盘使用量的快速增长感到震惊。虽然索引是构建在列上,但是并不是每个行记录都需要在索引里面,这是部分索引partial indexes就提供了一个解决方案。

假设在电子商务应用程序的数据库中有一个很大的orders表,包含应用程序中指定的每种类型的订单数据,甚至包括那些未完成的订单。此时应用程序有一个搜索功能,可以根据orders表中的一列进行过滤,但是那些未完成的订单不需要在这个索引中。

创建部分索引时使用WHERE子句,使索引只包含符合条件的行。下面是一个简单示例:

CREATE INDEXorders_completed_user_id  ON orders (user_id)  WHERE completed IS TRUE;

诚然,在这样的场景中保持的数据量将会很少(user_id可能只是一个整数),但是对于文本列或多列索引,最终节省的磁盘空间将会很大。

声明: 本文由入驻OFweek维科号的作者撰写,观点仅代表作者本人,不代表OFweek立场。如有侵权或其他问题,请联系举报。
侵权投诉

下载OFweek,一手掌握高科技全行业资讯

还不是OFweek会员,马上注册
打开app,查看更多精彩资讯 >
  • 长按识别二维码
  • 进入OFweek阅读全文
长按图片进行保存