我打算创建一个包含x千行数据的mysql 5(myISAM)表。每行将有一个计数字段,&具有20个最高计数值的行将被检索很多,可能与每行更新的一比一。通常不会检索到这20行中的千行。检索'最受欢迎'表格行的高效db设计
有什么选择将选择一个有效的方法来查询20个最高计数值。数据不是有是实时生活,但它有帮助!
我打算创建一个包含x千行数据的mysql 5(myISAM)表。每行将有一个计数字段,&具有20个最高计数值的行将被检索很多,可能与每行更新的一比一。通常不会检索到这20行中的千行。检索'最受欢迎'表格行的高效db设计
有什么选择将选择一个有效的方法来查询20个最高计数值。数据不是有是实时生活,但它有帮助!
在计数字段上创建一个索引。完成。
每五分钟,空出来,然后将前20个复制到一个单独的表。要获得前20名,请参考该表。完成!
(或者,你可以在接下来的几个小时调整您的查询,参数和指标,使之都“恰到好处”)
为什么downvotes?至少我会很感激你为什么不喜欢这个想法...... – 2010-02-05 01:15:14
添加一个索引来计数字段,然后只是一个正常的查询:
SELECT * FROM myTable ORDER BY countField DESC LIMIT 20;
最快的手指第一。以防万一你想知道,我曾考虑过轮询解决方案,甚至可能只是将20个最繁忙的行复制到一个单独的表中,并将它们的更新放在那里,也许是'重新索引'20日报或其他任何内容......但始终是索引在这些情况下的正确解决方案? – rutherford 2010-02-05 00:58:55
对于只有数千行的表格,索引将会很好。当你得到数百万行时,减小数据集的大小值得额外付出。 – 2010-02-05 01:01:36