PHP MYSQL SQL语句优化
select*fromcdb_membersinnerjoincdb_memberfieldsoncdb_members.uid=cdb_memberfields.uid...
select * from cdb_members inner join cdb_memberfields on cdb_members.uid=cdb_memberfields .uid inner join supe_userfields on cdb_members.uid=supe_userfields.uid inner join cdb_usergroups on cdb_members.groupid=cdb_usergroups.groupid inner join supe_userspaces on cdb_members.uid=supe_userspaces.uid inner join supe_userspacefields on cdb_members.uid=supe_userspacefields.uid order by cdb_members.uid desc limit 0,500
请问各位高手这个SQL语句还能不能进行更好的优化?
在执行的时候会很慢~~~ 展开
请问各位高手这个SQL语句还能不能进行更好的优化?
在执行的时候会很慢~~~ 展开
1个回答
展开全部
你的语句是正确的,速度慢两种可能:
一、是索引不对,你所有的关联字段,应该在相应表中有唯一索引,最好是主键,例如:
cdb_members.uid
cdb_memberfields .uid
supe_userfields.uid
cdb_members.groupid
cdb_usergroups.groupid
supe_userspaces.uid
supe_userspacefields.uid
如果以上的表没有主键,请设置相应字段为主键,如果有其他的主键而且是必须的,那么在上面的字段建立唯一索引。
二、数据量过大,如果你cdb_members的记录很多,远远大于500条,可以考虑改变程序,先重此表里面获取500条数据,然后在循环里面每条数据库关联获取其它表的信息,这样就不需要先对五个表做链接。
一、是索引不对,你所有的关联字段,应该在相应表中有唯一索引,最好是主键,例如:
cdb_members.uid
cdb_memberfields .uid
supe_userfields.uid
cdb_members.groupid
cdb_usergroups.groupid
supe_userspaces.uid
supe_userspacefields.uid
如果以上的表没有主键,请设置相应字段为主键,如果有其他的主键而且是必须的,那么在上面的字段建立唯一索引。
二、数据量过大,如果你cdb_members的记录很多,远远大于500条,可以考虑改变程序,先重此表里面获取500条数据,然后在循环里面每条数据库关联获取其它表的信息,这样就不需要先对五个表做链接。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询