我对Django查询有一个与性能相关的问题。
假设我有一张有10,000条记录的员工表。现在,如果我要选择5个年龄大于或等于20岁的随机雇员,那么可以说大约有5500名20岁或以上的雇员。django查询将是:
Employee.objects.filter(age__gte=20).order_by('?')[:5]
Run Code Online (Sandbox Code Playgroud)
并且该查询在mysql中的原始副本将是:
SELECT * FROM `database`.`employee`
WHERE `employee`.`age` >= 20
ORDER BY RAND ()
LIMIT 5;
Run Code Online (Sandbox Code Playgroud)
从Django查询的外观看,数据库首先返回5500条记录,然后python以随机或我们选择的任何顺序对这些记录进行排序,并返回前五个记录的大块,而原始查询将仅直接从数据库返回五个记录。
我的问题是两个查询之间是否有性能差异?如果是这样,哪个更好,为什么?
在简单地调用show方法时,简单窗口不显示.为什么我的Simple窗口不显示.:(
import sys
from PyQt4 import QtGui
class Widget(QtGui.QWidget):
def __init__(self):
super(Widget, self).__init__()
simple = Simple()
button = QtGui.QPushButton("Button", self)
button.clicked.connect(simple.show)
self.show()
class Simple(QtGui.QWidget):
def __init__(self):
super(Simple, self).__init__()
self.setGeometry(300, 250, 250, 150)
self.setWindowTitle("Simple Widget")
if __name__ =="__main__":
app = QtGui.QApplication(sys.argv)
widget = Widget()
sys.exit(app.exec_())
Run Code Online (Sandbox Code Playgroud)
请帮忙!