采用 secondary index 查询仍然是要比用 primary key 查询来的快很多
innodb 的 clustered index 是把 primary key 以及 row data 保存在一起的,而 secondary index 则是单独存放,然后有个指针指向 primary key。因此,需要进行 count(*) 统计表记录总数时,利用 secondary index 扫描起来,显然更快。
SELECT COUNT(id) FROM table;
这是原文http://bugs.mysql.com/bug.php?id=19271
我提问:
如果在前端加memcache,直接存count总数[增加,删除等做加减,曾经大家有没有人采用过这种方案加速count(*)的?呵呵
回答:
count存在memcache,会涉及一个准确性的问题。有可能会在memcache中丢失。 如果丢失的情况还是要跑数据库的!
Secondary Index就和普通的B-Tree索引差不多了,只不过在Secondary Index的所有Leaf Nodes上面同时包含了所指向数据记录的主键信息,而不是直接指向数据记录的位置信息。
http://www.ourmysql.com/archives/284
innodb 的 clustered index 是把 primary key 以及 row data 保存在一起的,而 secondary index 则是单独存放,然后有个指针指向 primary key。因此,需要进行 count(*) 统计表记录总数时,利用 secondary index 扫描起来,显然更快。
SELECT COUNT(id) FROM table;
这是原文http://bugs.mysql.com/bug.php?id=19271
我提问:
如果在前端加memcache,直接存count总数[增加,删除等做加减,曾经大家有没有人采用过这种方案加速count(*)的?呵呵
回答:
count存在memcache,会涉及一个准确性的问题。有可能会在memcache中丢失。 如果丢失的情况还是要跑数据库的!
Secondary Index就和普通的B-Tree索引差不多了,只不过在Secondary Index的所有Leaf Nodes上面同时包含了所指向数据记录的主键信息,而不是直接指向数据记录的位置信息。
http://www.ourmysql.com/archives/284
作者:jackxiang@向东博客 专注WEB应用 构架之美 --- 构架之美,在于尽态极妍 | 应用之美,在于药到病除
地址:http://jackxiang.com/post/2062/
版权所有。转载时必须以链接形式注明作者和原始出处及本声明!
最后编辑: jackxiang 编辑于2009-10-15 09:54
评论列表