喜悦国际村 » PHP高级编程 » 请教:mysql查询占用大量内存,怎么优化?

页: [1]
akstrom2007-8-8 05:52 AM
请教: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 ;

这是怎么回事,有人遇到过吗?怎么去优化?

wleige2007-8-8 08:02 AM
数据表中的数据太多了,有个大公司这样做的可以参考一下,建十个结构相同的表,每个表十万条

[[i] 本帖最后由 wleige 于 2007-8-8 04:14 PM 编辑 [/i]]

heartsun2007-8-8 09:39 AM
把“cpbm”建个索引

tangstars2007-8-8 10:19 AM
1.type_id和cpbm做索引(index)
2.三句sql最好用unoin写成一条,然后fetch到数组,再筛选出来.

akstrom2007-8-9 05:49 AM
type_id和cpbm都已经是索引了

duketang2007-8-9 08:16 AM
我在基础区给你回了

motse2007-8-12 02:34 PM
enabled 作索引


查看完整版本: 请教:mysql查询占用大量内存,怎么优化?


Powered by Discuz! Archiver 6.1.0  © 2001-2006 Comsenz Inc.
Processed in 0.006933 second(s), 2 queries