我有一個PostgreSQL的查詢返回的120行{integer, boolean, integer, varchar(255), varchar(255), bigint, text}
運行查詢慢得多在數據庫中運行psql
完成後約70ms的。Django的cursor.execute(查詢)比Postgres數據庫
使用python/django與django.db.connection.cursor.execute()
它需要10s在同一臺機器上運行。
我試圖把所有的行到一個數組,一個字符串(18K字,但只返回第500採用相同的時間),所以只有一個返回行,但沒有收穫。
任何想法,爲什麼會出現在從蟒蛇內,並在數據庫運行查詢這樣的大幅放緩?
編輯
我不得不增加work_mem獲得在PSQL及時運行的功能。其他函數/查詢不顯示相同的模式,psql和python之間的區別只有幾毫秒。
編輯
砍伐work_mem到1MB顯示PSQL和Django的外殼類似的數字。難道django不會在work_mem中設置的內存?
編輯
唉。問題是在psql中設置的work_mem在全局無效,如果我在函數中設置了內存,則該調用是及時的。我想在配置文件中設置它可以在全局工作。
這是怎麼測量的?還有什麼是你的數據庫設置(例如,他們說「本地主機」,或包括完整的主機名)?有關環境,連接,Django安裝的任何其他細節? – Tadeck
我在python中使用psql和timeit.Timer中的解釋分析。我迄今爲止運行的其他查詢不顯示此模式。服務器在本地運行,所以沒有連接,例如localhost,環境是osx mountain lion,我使用的是django 1.3。 – parmenides
它不應該這麼慢......我們經常做的是比用那種時間附近沒有地方更大的取... –