页:
[1]
|
请教:mysql查询占用大量内存,怎么优化?
表有100万数据,大概300m左右
查询的时候,在同一页面运行了3个查询
select cpbm,cpmc,zt_id,img_s from product where type_id='240' and enabled='Y' order by cpbm desc limit 0,12
select cpbm,cpmc,zt_id,img_s from product where type_id='241' and enabled='Y' order by cpbm desc limit 0,12
select cpbm,cpmc,zt_id,img_s from product where type_id='247' and enabled='Y' order by cpbm desc limit 0,12
mysql进程的内存从4m慢慢爬升到500M,运行完降回正常
数据库结构为
CREATE TABLE `product` (
`cpbm` int(11) NOT NULL auto_increment,
`cpmc` varchar(250) NOT NULL default '',
`zt_id` int(11) NOT NULL default '0',
`type_id` int(11) NOT NULL default '0',
`img_s` varchar(250) character set latin1 collate latin1_bin NOT NULL default '',
`enabled` enum('Y','N') NOT NULL default 'Y',
…………………………………………
UNIQUE KEY `sn` (`cpbm`),
KEY `type_id` (`type_id`,`type_sum`),
KEY `zt_id` (`zt_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1110110 ;
这是怎么回事,有人遇到过吗?怎么去优化? |
|
数据表中的数据太多了,有个大公司这样做的可以参考一下,建十个结构相同的表,每个表十万条
[[i] 本帖最后由 wleige 于 2007-8-8 04:14 PM 编辑 [/i]] |
| heartsun | 2007-8-8 09:39 AM |
|
| 把“cpbm”建个索引 |
| tangstars | 2007-8-8 10:19 AM |
|
1.type_id和cpbm做索引(index)
2.三句sql最好用unoin写成一条,然后fetch到数组,再筛选出来. |
| duketang | 2007-8-9 08:16 AM |
|
| 我在基础区给你回了 |
Powered by Discuz! Archiver 6.1.0
© 2001-2006 Comsenz Inc.
Processed in 0.006933 second(s), 2 queries |