我想知道这是否:
$column_family->get('row_key', $columns=array('name1', 'name2'));
比我现在使用的更灵活的速度更快:
$column_family->get('row_key');
方法1当然更难实现,但它会减少负载/带宽/延迟吗?
Cassandra 不是 mysql,因此那里有些东西有所不同也就不足为奇了。:)
在这种情况下,Cassandra 的稀疏行存储模型意味着对于少量列,全行版本会更快,因为 Cassandra 不需要反序列化和检查其行级列条目。
当然,对于大量列,反序列化的额外工作将再次占主导地位。
底线:担心这一点几乎可以肯定是过早的优化。如果不是,请测试。
第一个更快,尤其是在处理包含大量列的大型表时。
即使您只有两个名为name1
and的列name2
,指定它们的名称也应避免从 MySQL 端的表结构中提取列名。所以它应该比使用*
选择器更快。
但是,使用PHP 中的microtime()对大型表测试您的结果,您就会明白我在说什么。当然,如果表中有 20 多列并且想要全部提取它们,则放置*
比列出所有这些列名更容易,但就速度而言,列出列要快一些。
检验这个结论的最好方法是自己测试。