逻辑删除的delete_time问题

逻辑删除的delete_time问题

老师,因为要使用逻辑删除,所以每个表中设计了一个字段 delete_time 字段,类型为datetime.  

默认为 null 表示记录没有被删除。但是这样的话,查询数据表时。最后的条件都基本都要加上 and delete_time is null . 

这样就会FULL,全表扫描,不走索引,但是不设计delete_time又不行,怎么做这个才能效率高。

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
大目 2020-12-08 18:39:18

用is_deleted =0表示没删除,1表示已删除即可。

  • 提问者 蓝色西西 #1

    老师,is_deleted=0 或者 1, 这样这个字段的索引,不就会有很多都是一样的了吗。区分度不够高,把这个字段建立索引,查询效率不高怎么办?

    2020-12-09 08:57:23
  • 大目 回复 提问者 蓝色西西 #2
    你查询的时候,还有其他条件啊?
    2020-12-09 09:07:03
  • 提问者 蓝色西西 回复 大目 #3

    比如有时候要分页显示当前所有的内容列表,这时候查询语句是 select * from content where is_delete=0 limit 100,10 ; 这样区分度不高的索引,数据百万时效率会好吗 

    2020-12-09 10:07:25
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师