我正在关注在线数据库课程,我收到了这个问题。
假设我有表USER,CHECKIN和PLACE。
USER(uid,uname,ucity),uid是主键。
PLACE(pid,pname,pxcoord,pycoord,pcity),pid是主键。
CHECKIN(uid,pid,cdate,ctime),(uid,cdate,ctime)是主键。
查询
select c.uid, c.pid c.cdate
from user u join checkin c join place p
where ucity='NewYork' and pcity='Chicago'
只允许创建最多两个索引结构,最佳选择是什么?为什么?
答案 0 :(得分:3)
对于该查询,请在ucity
上创建一个索引,在pcity
上创建一个索引。
此外,如果您允许创建最多2个索引,也许您也可以修改一个索引。如果是这种情况,请在CHECKIN
之后立即修改pid
表格上的主键以包含uid
,因为很可能在不久的将来您将会这样做从内部或左连接中的cross join转换此查询