首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Laravel - MySQL -时间戳性能与布尔列?

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

Stack Overflow用户
提问于 2019-12-28 12:46:01
回答 1查看 183关注 0票数 0

我目前正在运行不同的查询,其中我想排除那些在过去36小时内没有活动过的用户。

我的users表有一个last_connection_time,它是用户上次连接的时间戳。

我正在考虑在相关查询中添加一个users.last_connection_time < $timestamp_36hours_ago

我有点担心这会对演出产生多大的影响。

最好每2-6小时运行一次脚本,更新名为innactive的users表中的布尔列,然后通过whereNull('users.innactive')忽略查询中的innactive。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-12-28 13:24:27

索引last_connection_time,然后执行更大/更低的比较将足够快,并将使用索引,这将极大地帮助MySQL寻找记录。

但是,如果您创建一个布尔列,然后执行基于whereNull(users.inactive) ->索引的查询,那么它是一个低基数列,MySQL可能会忽略这里的索引,因为它无助于减少I/O,从而检查整个数据集--这正是您想要避免的。

您的数据集可能不会超过万亿字节的限制(甚至是千兆字节),所以您现在可能不会看到这两种方法之间有太多不同,但是对于永远增长的dataset,我只是将时间戳列进行索引,并执行><类型的查询,就像您在第一个场景中想要做的那样。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59511005

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档