2012-08-08 27 views
4

Database.Persist似乎是索引不可知的。這沒關係,我可以創建自己的索引,但是當添加/刪除字段時,通用SQL遷移似乎會創建並刪除表。這也會降低索引的效果。SQL指數與Database.Persist(Yesod網絡框架)

有沒有推薦的方法來確保它們在數據庫遷移中存活?

回答

7

只有SQLite3後端應該刪除表,PostgreSQL和MySQL都提供了足夠強大的ALTER TABLE命令來避免這種情況。所以索引只能在SQLite3中丟失。如果您在生產中使用SQLite3(並非真正推薦),您有兩種選擇:

  1. 禁用自動遷移並自己處理模式。
  2. 運行遷移後添加一些代碼以替換缺失的索引。
+0

謝謝你的回覆。我切換到PostgreSQL,所以這個問題已解決。 – Tero 2012-08-10 08:31:00