【发布时间】:2019-08-27 14:20:39
【问题描述】:
我需要为我即将使用 Laravel-Lumen 的项目进行数据库设计和表关系方面的帮助,以尽可能减少查询时间,下面我将描述我的所有表和 API 端点(我将仅列出来自每张桌子)
Table - Customer
-id
-name
-image
.
.
Table - Item
-id
-customer_id
-name
-price
-image
.
.
+ 8 more
Table Item_color
-id
-item_id
-red
-black
.
.
Table Favorites
-id
-user_id
-item_id
我的终点是:
- getItems(列出所有项目)
- getUseFavorites(列出用户收藏项)
注意:我没有使用雄辩的关系。
SELECT * from item, customer.name, customer.img_url,customer.location,item_color.red,item_color.blue,item_color.white
JOIN customer ON item.id = customer.id
JOIN sidedish ON item.id = item_color.item_id
WHERE item.location = $location
对于第一个端点,我必须检索所有项目字段 + 客户姓名、图像和位置 + 所有项目颜色(对于这个查询,我使用 JION)
对于第二个端点,我必须检索我也使用 JOIN 的用户的所有收藏项。
在运行拥有超过 500 个用户和项目以及每个用户 50 个收藏项目的工厂后,我的问题是查询时间需要 3.8 秒才能完成上述端点,所以现在我在想如果应用程序达到 10000 个或更多用户怎么办?搜索后我发现许多文章指出使用未优化的 JION 查询会减慢你的应用程序,所以任何建议,想法将不胜感激
【问题讨论】:
-
确保您有正确的索引。分页您的商品,以便消费者决定他们想要多少页商品。
标签: mysql sql laravel database-design