我有3个表:users,logs,log_entries。一个用户有很多日志,一个日志有很多条目。它看起来像这样
假设有100个用户,每个用户有1000个日志,每个日志有1000个条目。这意味着log_entries表中将有100 000 000行,当我想从日期x检查日志时,它需要从100 000 000行过滤我想要的数据。
请问这个问题的正确解决方法是什么?
答案 0 :(得分:0)
您可以使用INNER JOIN
和CONCAT
:
SELECT *
FROM Users U
INNER JOIN Logs L ON U.UserId = L.UserId
INNER JOIN Log_Entries LE ON
CONCAT(L.UserId,'|',L.Session_Start) = LE.UserIdSession_Start
但我会建议更改你的表结构 - 这很奇怪。至少,将Log_Id添加到Logs表中,并在Log_Entries表中也包含该字段。