2011-11-02 64 views
1

我有一個有很多條目(超過12,513,262)的模型,它們應該呈指數級增長。但問題是由於這個巨大的否。項查詢正在採取了大量的時間,有沒有辦法使用索引等Django查詢優化

我的查詢是這樣的,以提高性能:

MyModel.objects.all().order_by('-timestamp')[0:50] 

及其服用大量的時間來執行。

+0

請問,什麼是型號名稱只是好奇 – danihp

+0

@danihp - ?!爲MyModel = d – Glycerine

+0

@Glycerine,當然現在我明白爲什麼約12513262條目;) – danihp

回答

4

你在時間戳字段上有index嗎?

如果您使用的是south(對於數據庫遷移,如果您尚未進行數據庫遷移,您一定要查看它),您可以將db_index=True添加到您的字段並遷移。否則,你可以運行

./manage.py sqlindexes MyApp 

顯示的sql語句添加索引。 (您需要手動運行,例如使用

./manage.py dbshell 
+0

nope如何創建它? – Abhi

+0

我沒有任何索引,現在如果可以,我可以創建一個如何做到這一點? – Abhi

+0

如果您尚未使用South,則需要使用相應的SQL手動創建索引。這將根據您使用的數據庫而有所不同。詢問Google:「創建索引[我的數據庫品牌]」 –