应该创建什么索引?

时间:2016-04-30 06:13:35

标签: mysql sql database database-optimization

我正在关注在线数据库课程,我收到了这个问题。

假设我有表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'

只允许创建最多两个索引结构,最佳选择是什么?为什么?

1 个答案:

答案 0 :(得分:3)

对于该查询,请在ucity上创建一个索引,在pcity上创建一个索引。

此外,如果您允许创建最多2个索引,也许您也可以修改一个索引。如果是这种情况,请在CHECKIN之后立即修改pid表格上的主键以包含uid,因为很可能在不久的将来您将会这样做从内部或左连接中的cross join转换此查询