索引会占用比想象中的还要大的空间,有好几次我向表中添加索引以增加速度,但是对磁盘使用量的快速增长感到震惊。虽然索引是构建在列上,但是并不是每个行记录都需要在索引里面,这是部分索引partial indexes就提供了一个解决方案。
假设在电子商务应用程序的数据库中有一个很大的orders表,包含应用程序中指定的每种类型的订单数据,甚至包括那些未完成的订单。此时应用程序有一个搜索功能,可以根据orders表中的一列进行过滤,但是那些未完成的订单不需要在这个索引中。
创建部分索引时使用WHERE子句,使索引只包含符合条件的行。下面是一个简单示例:
CREATE INDEXorders_completed_user_id
ON orders (user_id)
WHERE completed IS TRUE;
诚然,在这样的场景中保持的数据量将会很少(user_id可能只是一个整数),但是对于文本列或多列索引,最终节省的磁盘空间将会很大。
本文分享自 yanzongshuaiDBA 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!