关系数据库中标记删除的效率问题


现在有个项目,对一些数据都附加一个删除标记,标记为1则表示已删除;标记为0则表示未删除。

假如说我要去从未删除的数据中查数据,怎么做能够提高效率(避免全表扫描)?

给这个标记列添加个索引之类的?

关系型数据库 数据库 数据库性能优化 数据库设计

lamar 11 years, 10 months ago
  • 如果你的sql是:

 select * from table1 where is_deleted = 1;

那别折腾了, 直接全表.

  • 如果你的数据库支持 位图索引, 那么这个可能是你需要的, 具体看你的sql和数据分布.

  • 如果你的查询大概是:


 select * from table1 where is_deleted = 1 and column1 = 'xxx';

那么考虑在column1上的索引或者 (is_deleted, column1) 联合索引.

杯具的小沙包 answered 11 years, 10 months ago

Your Answer