我们的网站有一个问题:一页的访问时间太长。我们发现它在该页面中有一个n * n矩阵;对于矩阵中的每个项目,它从MYSQL数据库中查询三个表。该矩阵中的每个项目都使查询安静。
所以我想也许是因为大量的MYSQL查询导致了这个问题。我想尝试修复它。以下是我在下面列出的一个混淆:
1
m = store.execute('SELECT X FROM TABLE1 WHERE I=1')
result = store.execute('SELECT Y FROM TABLE2 WHERE X in m')
2。
r = store.execute('SELECT X, Y FROM TABLE2');
result = []
for each in r:
i = store.execute('SELECT I FROM TABLE1 WHERE X=%s', each[0])
if i[0][0]=1:
result.append(each)
它在TABLE1中有大约200个项目,在TABLE2中有超过400个项目。我不知道女巫部分占用的时间最多,所以我无法更好地决定如何编写我的sql语句。
我怎么知道在MYSQL中进行一些操作需要多长时间?谢谢!
答案 0 :(得分:1)
而不是安装一堆特殊工具,你可以采取这样一种简单的方法(原谅我的Ruby):
start = Time.new
# DB query here
puts "Query XYZ took #{Time.now - start} sec"
希望您可以将其转换为Python。或者......再次原谅我的Ruby ......
QUERY_TIMES = {}
def query(sql)
start = Time.new
connection.execute(sql)
elapsed = Time.new - start
QUERY_TIMES[sql] ||= []
QUERY_TIMES[sql] << elapsed
end
然后通过此自定义方法运行所有查询。在进行测试运行之后,您可以打印出每个查询运行的次数以及平均/总执行时间。
对于未来,计划花一些时间学习“剖析”(如果你还没有)。为您选择的平台获得一个好的,并花一点时间学习如何使用它。
答案 1 :(得分:0)
我使用MySQL Workbench进行SQL开发。它提供响应时间,并且可以远程连接到获得许可的MySQL服务器(在这种情况下,将为您提供更准确的读数)。
http://www.mysql.com/products/workbench/
此外,正如您已经意识到,在for循环中看起来有一个SQL语句。这可能会极大地影响性能。您需要采用不同的路线来检索该数据。