我正在学习一个在线数据库类(class),我得到了这个问题。
假设我有表 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'
最多只允许创建两个索引结构,什么是最好的选择,为什么?
最佳答案
对于那个查询,在 ucity
上创建一个索引,在 pcity
上创建一个索引。
另外,如果您被允许创建最多 2 个索引,也许您还可以修改一个。如果是这种情况,请修改 CHECKIN
表上的主键,使其也包含 pid
,紧跟在 uid
之后,因为很可能在不久的将来您将从 cross join 转换此查询在内部或左连接中
关于mysql - 应该创建什么索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36951470/