我有一个用于调度某些事件的应用程序。所有这些事件都必须在每个预定时间后进行审查。
基本上我们有三张桌子:
id,item_id,execute_at - datetime) - item_id列有索引option.id,item_id,created_at -datetime( item_id列有索引选项。因此,应用程序的核心功能是“在实际时刻给我任何项目(尚未被审查)”。
我如何优化这个解决方案的速度(因为它是非常核心的业务特性,而不是微观优化)?
我认为向datetime字段添加索引没有任何意义,因为该字段的基数或唯一性很高,而且索引不会给出任何(?)提速。这是正确的吗?
你有什么推荐的?我应该试试no-SQL吗?
--
mysql -V
5.075我使用caching(memcached)在它有意义的地方。
已更新。
发布于 2010-04-24 09:36:50
我想您实际上想要的项目是排定的,但没有审查后的日程安排?
评论不应该连接到预定的项目而不是不同的项目吗?现在,您必须比较日期,看看哪些评论出现在一个预定项目之后,但在下一个项目之前。另外,如果一个项目在短时间内被排定了两次,那么您可能会得到属于第二次调度的两个评审。
通过此更改,您可以轻松地选择未评审的调度:
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创建索引,这当然具有最高的基数。
https://stackoverflow.com/questions/2703828
复制相似问题