【发布时间】:2011-01-04 07:42:41
【问题描述】:
我有一个包含 2 个应用程序(书籍和阅读器)的项目。
Books 应用程序有一个包含 400 万行的表,其中包含以下字段:
book_title = models.CharField(max_length=40)
book_description = models.CharField(max_length=400)
为了避免查询具有 400 万行的数据库,我正在考虑将其按主题划分(20 个模型,20 个表,200.000 行(book_horror,book_drammatic,ecc)。
在“阅读器”应用程序中,我正在考虑插入以下字段:
reader_name = models.CharField(max_length=20, blank=True)
book_subject = models.IntegerField()
book_id = models.IntegerField()
因此,我正在考虑使用整数“book_subject”(允许访问相应的表)和“book_id”(允许访问“book_subject”中指定的表中的书)来代替 ForeignKey。
避免查询具有 400 万行的表是一个很好的解决方案吗?
有其他解决方案吗?
谢谢^__^
【问题讨论】:
-
400 万不是很多,你有过早优化的情况。
-
使用自动完成字段从 ajax 查询该表,views.py 中有此查询:books.objects.filter(book_title__istartswith=request.GET['q'])[:100]跨度>
-
如果您在文本字段上查询表格并且性能是问题,您可以选择实现全文搜索。但是,您查询的字段的大小仅为 40 个字符,我不确定它是否对数据库造成了大问题。
-
这不是您提出的问题,但您可能会发现这很有帮助:stackoverflow.com/questions/1566717/…
标签: python django django-models django-database