首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL:优化DateTime字段上的无意义选择

SQL:优化DateTime字段上的无意义选择
EN

Stack Overflow用户
提问于 2010-04-24 08:53:14
回答 1查看 233关注 0票数 0

我有一个用于调度某些事件的应用程序。所有这些事件都必须在每个预定时间后进行审查。

基本上我们有三张桌子:

  • items(id,name)
  • scheduled_items(iditem_idexecute_at - datetime) - item_id列有索引option.
  • reviewed_items(iditem_idcreated_at -datetime( item_id列有索引选项。

因此,应用程序的核心功能是“在实际时刻给我任何项目(尚未被审查)”。

我如何优化这个解决方案的速度(因为它是非常核心的业务特性,而不是微观优化)?

我认为向datetime字段添加索引没有任何意义,因为该字段的基数或唯一性很高,而且索引不会给出任何(?)提速。这是正确的吗?

你有什么推荐的?我应该试试no-SQL吗?

--

代码语言:javascript
复制
mysql -V
5.075

我使用caching(memcached)在它有意义的地方。

已更新。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-04-24 09:36:50

我想您实际上想要的项目是排定的,但没有审查后的日程安排?

评论不应该连接到预定的项目而不是不同的项目吗?现在,您必须比较日期,看看哪些评论出现在一个预定项目之后,但在下一个项目之前。另外,如果一个项目在短时间内被排定了两次,那么您可能会得到属于第二次调度的两个评审。

通过此更改,您可以轻松地选择未评审的调度:

代码语言:javascript
复制
select i.id, i.name, s.execute_at
from items i
inner join scheduled_items s on s.item_id = i.id
left join reviewed_items r on r.scheduled_items_id = s.id
where r.id is null

至于你的问题:

,我认为向日期时间字段添加索引没有任何意义,因为该字段的基数或唯一性很高,而且索引不会给出任何(?)提速。是对的吗?

不,那不对。如果基数很高,索引就会很有用。默认情况下,会为表的唯一id创建索引,这当然具有最高的基数。

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

https://stackoverflow.com/questions/2703828

复制
相关文章

相似问题

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