在pics表上的aid,uid各自建立了索引,有下面两个查询语句:
select pid,thumbs,aid,uid from pics where aid=$album and uid=$uidselect pid,thumbs,aid,uid from (select * from pics where aid=$album) temptable where uid=$uid我想知道如果数据量在千万的时候,其中哪条语句的性能高些?
谢谢
select pid,thumbs,aid,uid from pics where aid=$album and uid=$uidselect pid,thumbs,aid,uid from (select * from pics where aid=$album) temptable where uid=$uid我想知道如果数据量在千万的时候,其中哪条语句的性能高些?
谢谢
应该做创建键值
拿出来自己做优化,然后再去过滤数据.
而第二种的方式,则是SQL在捞取每一行的时候都要去做那个判断,
效能要差点
第二个性能好些?mysql本身对于这样的查询就有优化,所以正像你所说的那样,其实是第一种好些。好就好在“选择”上
mysql会在2个索引中选择一个结果较少的作为查询的索引。而第二个由sql语句定死了只能是用aid的索引。
如果可以加个联合索引就好了:P
举个例子,aid=$album的结果数是10000,uid=$uid的结果数是100,
第一种情况,mysql就会使用uid的索引,那么它将在100条记录中不用索引的找aid=$album而第二种情况呢?
利用索引找出的结果数是10000,再在这里不利用索引找uid=$uid还是坚持你自己的看法么?:P
呵呵,仅仅是希望来看的人不要被误导