2012-08-08 60 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