【发布时间】:2019-11-21 06:59:19
【问题描述】:
我是 API 构建的新手。我有一个要求。我的 API 显示书籍详细信息,如果符合条件的书籍数量超过 25,API 一次应该只返回 25 本书,并支持检索下一组 25 本书直到检索到所有书籍的方式。
我还需要一点建议。我有 10 个表,我需要通过从每个表中获取一些数据来加入这些表,并将合并的结果返回给 API 调用。我认为一个查询中的 10 个连接会占用大量内存,并且可能不会给出最佳结果。
我还将在各种表格的某些列上设置一些过滤器。我应该为单个表单独获取行吗?同样在 API 返回调用中,某些键将具有多个数据,但此查询未显示以下是我正在使用的查询:
SELECT b.title,a.name,b.media_type,l.code,bsub.name,bs.name,f.url FROM books_book b
inner join books_book_authors ba on b.id=ba.book_id
inner join books_author a on a.id=ba.author_id
inner join books_bookshelves bss on ba.book_id=bss.book_id
inner join books_bookshelf bs on bss.bookshelf=bs.id
inner join books_book_subjects bsubs on bsubs.book_id=ba.book_id
inner join books_subject bsub on bsubs.subject_id=bsub.id
inner join books_format f on f.book_id=ba.book_id
inner join books_languages ls on ls.book_id=ba.book_id
inner join books_language l on ls.language_id=l.id
order by b.download_count desc;
【问题讨论】:
-
您将数据保存在这么多不同的表中是否有任何具体原因?作者、语言、主题等属性可以保存在 books 表中。
-
@arun : 我只得到了这种格式的 .sql 文件
-
您是否考虑构建一个物化视图,该视图将在完成所需的连接后保留所有这些信息,并且您可以从 API 查询视图。但是,保留视图会产生额外的开销。