使用 MySQL 从范围内选择特定日期
我有两个表,
Table A: a_id,timemarker (datetime)
Table B: b_id,start (datetime), stop(datetime), cat(varchar)
table A
149|2010-07-19 07:43:45
150|2010-07-19 08:01:34
151|2010-07-19 07:49:12
table B
565447|2010-07-19 07:30:00|2010-07-19 08:00:00
565448|2010-07-19 08:00:00|2010-07-19 08:20:00
我想选择表 A 中位于表 B 范围内的所有行,
谢谢
i've two tables
Table A: a_id,timemarker (datetime)
Table B: b_id,start (datetime), stop(datetime), cat(varchar)
table A
149|2010-07-19 07:43:45
150|2010-07-19 08:01:34
151|2010-07-19 07:49:12
table B
565447|2010-07-19 07:30:00|2010-07-19 08:00:00
565448|2010-07-19 08:00:00|2010-07-19 08:20:00
i want select all rows from Table A who are in the range of Table B
thanks
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
选择 ANY [B.start, B.end] 内的任何 A
OP 写道
是的,因为您可能将每个 A 与每个 B = 40k * 1.4M 进行比较比较。
但你的问题是“我该怎么做”,而不是“我是这样做的,我怎样才能让它更快”。
如果你想要更快,你需要在 B(start, end) 上添加索引;
Select any A that is within ANY [B.start, B.end]
The OP writes
Yes, because you're potentially comparing each A with every B = 40k * 1.4M comparisons.
But your question was "how do I do this", not "here's how I'm doing it, how can I make it faster".
if you want it faster, you'll need to add an index on B(start, end);
我觉得这个应该比较便宜。当然,额外的索引也会有帮助:)
I think this should be less expensive. Of course an extra index will help, too :)