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