select a.tid,a.subject,a.cid,FROM_UNIXTIME(a.createtime,'%Y/%m-%d') date,a.resume,b.title,a.pic_url from oho_colonys_note a,oho_custom_cat b where a.havepic=1 and b.pid=18 and a.cid=b.cid order by a.createtime desc limit 1
其中a为新闻表,数据7W条数据,b为新闻分类表,数据516条
执行时间72s
是因为sql语句问题,还是其他的什么原因。。
跪求赐教啊!!!
其中a为新闻表,数据7W条数据,b为新闻分类表,数据516条
执行时间72s
是因为sql语句问题,还是其他的什么原因。。
跪求赐教啊!!!
在两表CID上建立索引没有
CID、createtime 上建立复合索引试试
贴结果
EXPLAIN select a.tid,a.subject,a.cid,FROM_UNIXTIME(a.createtime,'%Y/%m-%d') date,a.resume,b.title,a.pic_url
from oho_colonys_note a,oho_custom_cat b
where a.havepic=1 and b.pid=18 and a.cid=b.cid
order by a.createtime desc
limit 1和show index from oho_colonys_note;
show index from oho_custom_cat你的语句中有 连接查询,还有排序,不是只在这两个字段上创建索引就可以有显著提高的。
'oho_colonys_note', '0', 'PRIMARY', '2', 'id', 'A', '73302', NULL, NULL, '', 'BTREE', ''
'oho_colonys_note', '0', 'id', '1', 'id', 'A', '73302', NULL, NULL, '', 'BTREE', ''
'oho_colonys_note', '0', 'uid', '1', 'tid', 'A', '73302', NULL, NULL, '', 'BTREE', ''
'oho_colonys_note', '1', 'siteid_cid', '1', 'siteid', 'A', NULL, NULL, NULL, '', 'BTREE', ''
'oho_colonys_note', '1', 'siteid_cid', '2', 'cid', 'A', '73302', NULL, NULL, '', 'BTREE', ''
'oho_colonys_note', '1', 'search1', '1', 'siteid', 'A', NULL, NULL, NULL, '', 'BTREE', ''
'oho_colonys_note', '1', 'search1', '2', 'ifcheck', 'A', NULL, NULL, NULL, '', 'BTREE', ''
'oho_colonys_note', '1', 'search1', '3', 'cid', 'A', NULL, NULL, NULL, '', 'BTREE', ''
'oho_colonys_note', '1', 'search1', '4', 'releasetime', 'A', '73302', NULL, NULL, '', 'BTREE', ''
'oho_colonys_note', '1', 'topped', '1', 'ord', 'A', NULL, NULL, NULL, '', 'BTREE', ''
'oho_colonys_note', '1', 'topped', '2', 'releasetime', 'A', NULL, NULL, NULL, '', 'BTREE', ''
'oho_colonys_note', '1', 'topped', '3', 'createtime', 'A', '73302', NULL, NULL, '', 'BTREE', ''
'oho_colonys_note', '1', 'havepic', '1', 'havepic', 'A', '73302', NULL, NULL, '', 'BTREE', ''
'oho_colonys_note', '1', 'createtime', '1', 'createtime', 'A', '73302', NULL, NULL, '', 'BTREE', ''这个是note的索引。对应的列名为
table non_unique key_name seq_in_index column_name collection Cardinality sub_part
packed null index_type comment
有点乱。
2. 配置你的my.cnf 或 my.ini ,
在 [mysqld]下配置参数max_length_for_sort_data=3000
如果没有配这个参数,就配上;如果原来有配,但是值很小,改大。嗯,3000基本够了吧。
在 [mysqld]下配置参数sort_buffer_size=2M
2M差不多够用了配置完后别忘了重启mysql服务。3.你用我改的这个再试试:
select
a.tid,
a.subject,
a.cid,
FROM_UNIXTIME(a.createtime,'%Y/%m-%d') date,
a.resume,
b.title,
a.pic_url
from oho_custom_cat b inner join oho_colonys_note a
on a.cid=b.cid
where a.havepic=1 and b.pid=18
order by a.createtime desc
limit 14.如果还是慢,建议拆成简单SQL,用存储过程。