开发者社区> 问答> 正文

Laravel-MySQL-时间戳性能与布尔列?

我目前正在运行不同的查询,这些查询要排除过去36个小时内未处于活动状态的那些用户。

我的用户表具有last_connection_time,这是该用户上次连接的时间的时间戳。

我正在考虑将a添加users.last_connection_time < $timestamp_36hours_ago到相关查询中。

我有点担心,但这会对性能产生多大的影响。

每隔2到6个小时运行一个脚本来更新users表中的boolean列innactive,然后通过a忽略查询中那些无效用户,会更好whereNull('users.innactive')吗?

展开
收起
几许相思几点泪 2019-12-29 20:51:48 6085 0
1 条回答
写回答
取消 提交回答
  • 索引last_connection_time然后执行比比较大/低的比较将足够快,并且将使用索引,这将在查找记录时极大地帮助MySQL。

    但是,如果创建一个布尔列,然后基于whereNull(users.inactive)->索引执行查询无法帮助您,那是低基数列,MySQL可能会忽略此处的索引,因为它无助于减少I / O,因此请检查整个数据集-那就是您要避免的事情。

    您的数据集可能未超过TB的限制(甚至不超过千兆字节),因此您目前可能不会在这两种方法之间看到太多差异,但是对于不断增长的数据集,我只不过是将timestamp列编入索引并执行>或<您希望在第一种情况下进行的查询类型。

    2019-12-29 20:51:55
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
搭建电商项目架构连接MySQL 立即下载
搭建4层电商项目架构,实战连接MySQL 立即下载
PolarDB MySQL引擎重磅功能及产品能力盛大发布 立即下载

相关镜像