背景:
A 表 3000 条数据
B 表 2000 条数据
B表中有个外键是A表的id
需求:
查询出 A表及B表中的字段信息。
例,A表数据
id | name | comm |
---|---|---|
1 | test1 | 你好 |
2 | test2 | 你不好 |
B表数据
id | asset_id | name |
---|---|---|
1 | 1 | b数据1 |
2 | 1 | b数据2 |
结果:
name | comm | b-name |
---|---|---|
test1 | 你好 | b数据1 |
test1 | 你好 | b数据2 |
test2 | 你不好 |
我的方案:
django model 模型:
class Adata(models.Model):
name = models.CharField(u'姓名', max_length=10 )
comm = models.TextField()
class Bdata(models.Model):
asset = models.ForeignKey('Adata', db_index=True)
name= models.CharField(u'姓名', max_length=10 )
逻辑:
datas = Adata.objects.select_related().all()
datalist = []
for data in datas:
row = []
row.append( data.name )
row.append( data.comm )
for test in data.bdata_set.all():
subrow = row
subrow.append( test.name)
datalist.append( subrow )
A 表和 B 表在 3000左右条数据的时候,大约需要4秒左右的时间。求如何优化,求指点。
Thx
我换了个思路,从B表入手。通过双下划线关联A表的字段数据。这样既能得到想要的记录条数,又能得到A表的字段数据。
逻辑:
总结:
有时候,遇到问题不要一成不变。换个入口思路,也行便会有意想不到的惊喜。