0
我運行這樣的查詢在Python腳本優化SQL查詢,多個具有不同參數選擇
results = []
for day in days:
for hour in hours:
for id in ids:
query = "SELECT AVG(weight) from table WHERE date >= '%s' \
AND day=%s \
AND hour=%s AND id=%s" % \
(paststr, day, hour, _id)
results.append(query.exec_and_fetch())
還是在這一天不是用來蟒蛇,爲每一天,每一個小時的人,對於每個小時的列表中的所有ID,我需要獲得某些項目的平均權重。
爲例:
day 0 hour 0 id 0
day 0 hour 0 id 1
...
day 2 hour 5 id 4
day 2 hour 6 id 0
...
這導致有大量的查詢,所以我想,如果有可能做到這一點的一個代替。我一直在擺弄着一些觀點,但我總是被困在不同的參數上,或者他們變得非常慢,這是一個相當大的桌子。
我最親密的猜測是這樣的:
create or replace view testavg as
select date, day, hour, id, (select avg(weight) from cuWeight w_i
where w_i.date=w_o.date
and w_i.day=w_o.day
and w_i.hour=w_o.hour)
from cuWeight w_o;
但這並沒有返回任何東西,等待一個或兩個我取消查詢後分鍾。
表看起來像這樣:
CREATE TABLE `cuWeight` (
`id` int(11) NOT NULL default '0',
`date` date default NULL,
`hour` int(11) default '0',
`weight` float default '0',
`day` int(11) default '0',
KEY `id_index` (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
MyISAM和latin1的是歷史(幾乎化石)的原因。
向我們展示了創建表語句和示例數據(HTTP:/ /sqlfiddle.com),關於正在使用的存儲引擎的信息。並更好地定義你的問題不是每個人都可以閱讀Python代碼... –