2012-03-18 75 views
1

非常简单的查找,用A来查找B,A是在整个表唯一的值,B是1在整个表的唯一值,以及Azure存储表查询,这是更快?

方法:

PartionKey => A 
RowKey => B 

查找由TOP(1) PartionKey eq "A"

方法2:

PartionKey => A 
RowKey => "" (empty string) 
Value => B 

查找由TOP(1) (PartionKey eq "A") and (RowKey eq "")

方法3:

PartionKey => "" (empty string) 
RowKey => A 
Value => B 

通过TOP(1) (PartionKey eq "") and (RowKey eq "A")查找

问:哪个更快呢?

回答

1

在方法#2,行关键是空的,但你查询指定(的“B”)非空行的关键。你的意思是and (RowKey eq "")?如果是这样,该方法更快,因为它总是会返回结果。方法1可能会返回一个空的结果和延续令牌,此时你必须进行第二次查询的数据真正得到设定。

+0

是的,我的意思是' “”'。谢谢。我会一直使用'PartitionKey'和'RowKey'。我也在那里做了一个方法3。比较'PK = A和R k = “”'和'PK = “” 和RK = A',这是更快?如果查询量很大,您推荐哪种方法? – 2012-03-18 10:46:40

+1

如果你指定了分区键和行键,我不认为实际值(空字符串或不是)会对性能产生任何影响。 – smarx 2012-03-18 13:23:23

1

如果我理解你的问题......如果A是整个表格中的唯一值,那么B的唯一性是无关紧要的。所以你最好,可扩展性智慧,拆分为二,使用第一部分作为分区键,而第二部分作为行键。

理解在Azure表存储中,PartitionKey + RowKey类似于SQL数据库中的主键是很重要的,并且使用整个主键进行查找效率最高。