主要是想让aid 从大到小排序。现在是从小到大,速度还行,但加上order by aid desc速度就慢下来了。怎么优化?
aid是主键还是什么?有索引吗?
请贴出 desc sql结果
if(empty($wheresql)){ $wheresql="where aid>=(SELECT aid FROM `tj_logs` LIMIT $sqlfirst,1) order by aid desc limit $shownu"; }else{ $wheresql.=" and aid>=(SELECT aid FROM `tj_logs` LIMIT $sqlfirst,1) order by aid desc limit $shownu"; } $query=mysql_query("SELECT DISTINCT A.*,B.url,C.username FROM `tj_logs` A LEFT JOIN `tj_domain` B ON A.wid=B.wid LEFT JOIN `tj_members` C ON A.uid=C.uid $wheresql");
不明白你的 aid>=(SELECT aid FROM `tj_logs` LIMIT $sqlfirst,1) 是什么意思 作用是什么?
优化后分页。本来就一句是这样的:$query=mysql_query("SELECT DISTINCT A.*,B.url,C.username FROM `tj_logs` A LEFT JOIN `tj_domain` B ON A.wid=B.wid LEFT JOIN `tj_members` C ON A.uid=C.uid order by A.aid desc limit $sqlfirst,$shownu"); 但速度太慢了,才改成了上述的写法。
if(empty($wheresql)){
$wheresql="where aid>=(SELECT aid FROM `tj_logs` LIMIT $sqlfirst,1) order by aid desc limit $shownu";
}else{
$wheresql.=" and aid>=(SELECT aid FROM `tj_logs` LIMIT $sqlfirst,1) order by aid desc limit $shownu";
}
$query=mysql_query("SELECT DISTINCT A.*,B.url,C.username FROM `tj_logs` A LEFT JOIN `tj_domain` B ON A.wid=B.wid LEFT JOIN `tj_members` C ON A.uid=C.uid $wheresql");
作用是什么?
但速度太慢了,才改成了上述的写法。
看看结果
wid、uid 都应有索引