Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python e ON(base_form.id=base_formrecordattributevalue.form_parent_id)内部连接base_formrecordattributevalue T5 ON(base_form.id=T5.form_pare_Python_Mysql_Django_Performance_Count - Fatal编程技术网

Python e ON(base_form.id=base_formrecordattributevalue.form_parent_id)内部连接base_formrecordattributevalue T5 ON(base_form.id=T5.form_pare

Python e ON(base_form.id=base_formrecordattributevalue.form_parent_id)内部连接base_formrecordattributevalue T5 ON(base_form.id=T5.form_pare,python,mysql,django,performance,count,Python,Mysql,Django,Performance,Count,e ON(base_form.id=base_formrecordattributevalue.form_parent_id)内部连接base_formrecordattributevalue T5 ON(base_form.id=T5.form_parent_id),其中(base_form.form_type_id=232和base_formrecordattributevalue.record_attribute_type_id=16981和base_formrecordattribute

e ON(base_form.id=base_formrecordattributevalue.form_parent_id)内部连接base_formrecordattributevalue T5 ON(base_form.id=T5.form_parent_id),其中(base_form.form_type_id=232和base_formrecordattributevalue.record_attribute_type_id=16981和base_formrecordattributevalue.record_值如二进制%C%和T5.record_值如%4H%和T5.record_属性_type_id=16986)
queriedForms.filter(pk_in=list(formtype.form_set.all().filter(formrecordattributevalue\uuuu record\u value\uuuuuu contains=constraint['TVAL',formrecordattributevalue\uuuuu record\u attribute\u type\uuuu pk=rtypePK).值列表('pk',flat=True)).count()
对于较大的查询集结果,总体上似乎更快,但查询集结果越小,
queriedForms.filter(pk__in=list(formtype.form_set.all().filter(formrecordattributevalue__record_value__contains=constraint['TVAL'], formrecordattributevalue__record_attribute_type__pk=rtypePK).values_list('pk', flat=True))).count()
masterQuery = bigmodel.relatedmodel_set.all()
masterQuery = masterQuery.filter(name__contains="test")
masterQuery.count() 
#returns 100,000 results in < 1 second
#test filter--all 100,000+ names have "test x" where x is 0-9 
storedCount = masterQuery.filter(name__contains="9").count()
#returns ~50,000 results but takes 5-6 seconds
masterQuery = masterQuery.filter(name__contains="9")
masterQuery.count()
#also returns ~50,000 results in 5-6 seconds
masterQuery = bigmodel.relatedmodel_set.all()
masterQuery = masterQuery.filter(name__contains="test") 
(masterQuery & masterQuery.filter(name__contains="9")).count()
mainQuery = masterQuery = bigmodel.relatedmodel_set.all()
mainQuery = mainQuery.filter(reverseforeignkeytestmodel__record_value__contains="test", reverseforeignkeytestmodel__record_attribute_type__pk=1)
#Where "record_attribute_type" is another foreign key being used as a filter
mainQuery.count() #produces 100,000 results in < 1sec
mainQuery.filter(reverseforeignkeytestmodel__record_value__contains="9", reverseforeignkeytestmodel__record_attribute_type__pk=5).count()
#produces ~50,000 results in 5-6 secs
mainQuery = bigmodel.relatedmodel_set.all()
#Setup the first filter as normal
mainQuery = mainQuery.filter(reverseforeignkeytestmodel__record_value__contains="test", reverseforeignkeytestmodel__record_attribute_type__pk=1)

#Grab a values list for the second chained filter instead of chaining it    
values = bigmodel.relatedmodel_set.all().filter(reverseforeignkeytestmodel__record_value__contains="test", reverseforeignkeytestmodel__record_attribute_type__pk=8).values_list('pk', flat=True)
#filter the first query based on the values_list rather than a second filter
mainQuery = mainQuery.filter(pk__in=values)
mainQuery.count()
#Still takes on average the same amount of time after enough test runs--seems to be slightly faster than average--similar to the (quersetA & querysetB) merge solution I tried.
mainQuery.filter(pk__in=list(formtype.form_set.all().filter(formrecordattributevalue__record_value__contains=constraint['TVAL'], formrecordattributevalue__record_attribute_type__pk=rtypePK).values_list('pk', flat=True))).count()
values = Blog.objects.filter(
    name__contains='Cheddar').values_list('pk', flat=True) 
entries = Entry.objects.filter(blog__in=list(values)) 
masterQuery = bigmodel.relatedmodel_set.all()
pks = list(masterQuery.filter(name__contains="test").values_list('pk', flat=True))
count = masterQuery.filter(pk__in=pks, name__contains="9")
names = masterQuery.filter(name__contains='test').values_list('name')
count = sum('9' in n for n in names)
# query only RelatedModel, avoid JOIN
related_pks = RelatedModel.objects.filter(
     record_value__contains=constraint['TVAL'],
     record_attribute_type=rtypePK,
).values_list('pk', flat=True)

# list(queryset) will do a database query, resulting in a list of integers.
pks_list = list(related_pks)

# use that result to filter your main model. 
count = MainModel.objects.filter(
     formrecordattributevalue__in=pks_list
).count()