mysql七十万数据查询很慢,求大神们帮我看看哪里错了。

未梦 发布于 2014/11/17 18:40
阅读 2K+
收藏 1
一共七十多万条数据,而且还是分了四张表的,

novel_chapter
novel_chapter_1
novel_chapter_2
novel_chapter_3
novel_chapter_4


sql语句也非常简单
SELECT id,name FROM `novel_chapter` WHERE id=xx

nid的索引也建立了的,


查询一千条数据出来没问题,但是查询两千,三千,四千的时候就非常慢了,十多秒。


请问我哪里错了吗?
加载中
1
桔子
桔子
70w你分什么库,7000时候再分,小数据分库没有不分快
0
聽雨人
聽雨人
表结构,sql,执行计划,都没贴,都不知道怎么说
未梦
未梦
结构: id nid name content time id主键,nid索引。 没有执行计划, sql就是问题里面说那句,结构: id nid name content time id主键,nid索引。 没有执行计划, sql就是问题里面说那句, SELECT id,name FROM `novel_chapter` WHERE nid=xx
0
buglife
buglife
没错,正常,如果数据量更大你需要考虑分布式
0
大王叫我来卖萌
大王叫我来卖萌
EXPLAIN查看执行计划
0
大王叫我来卖萌
大王叫我来卖萌
几十万,这个很轻松的
未梦
未梦
可是要十多秒啊
0
crazymus
crazymus
一次性读出几千条,当然会慢了~
0
e
eqyun

贴出建表语句

show create table XXX

0
shijacky
shijacky
可以试下这样,一千条一千条的读然后合并
0
倪倪
表模式,内存缓存,MySQL环境配置优化,升级MySQL版本。再是提升硬件。
0
聽雨人
聽雨人
explain select id,name from novel_chapter where nid=xx 看执行计划。
另外
select  count(DISTINCT nid) from novel_chapter;
select count(*) from novel_chapter;
select count(*) from novel_chapter where nid=xx;
看这三个数是否太接近。
聽雨人
聽雨人
回复 @未梦 : 如果还是不行就做个nid_name的索引,看能不能用上覆盖索引,那样的话可以减少读取行数据。
聽雨人
聽雨人
回复 @未梦 : innodb 表的话试下这个看会不会好点。另外content字段应该很长吧,能独立出去最好 select id,name from novel_charpter where id in ( select id from novel_charpter where nid=xxx );
未梦
未梦
第一句执行结果【possible_keys。nid_vid_time_Index,nid_time_Index,nid_index。key。nid_index。key_len。4。】 第二句执行结果【1456】 第三句执行结果【746369】 第四句执行结果【4641】
keyganker
keyganker
顶!
返回顶部
顶部