나는 캠페인 추적 사이트를 만들고 있습니다. 이것은 100 개의 테이블을 가지고 있습니다. CREATE TABLE IF NOT EXISTS
(표는 23 개 필드와 9 개의 색인으로 구성되어 있습니다)을 사용하여 검색 및 클릭 기록을위한 매월 새 표를 작성합니다. 제 의뢰인이 CPU를 많이 먹고 있다고 말하는이 쿼리에 대해 불평하고 있습니다. 모든 요청에 대해 실행 중입니다. 그러나이 테이블이 존재하지 않으면 즉, 한 달에 한 번이 테이블을 만듭니다. 이렇게하면 CPU 사용량이 증가할까요? 그렇다면이 경우 CPU 사용량을 줄일 수있는 방법이 있습니까?mysql cpu 사용을 줄이는 방법 아래의 경우
EDIT 1 개
CREATE TABLE IF NOT EXISTS click_log_201305 (
hit_id int(10) unsigned NOT NULL auto_increment,
link_id int(11) NOT NULL default '0',
word varchar(225) NOT NULL default '',
ppc_engine varchar(40) NOT NULL default 'internal',
ppc_commission varchar(10) default NULL,
gross_price decimal(5,3) NOT NULL default '0.000',
price decimal(5,3) NOT NULL default '0.000',
hit_date int(11) NOT NULL default '0',
hit_time int(11) NOT NULL default '0',
affiliate varchar(50) NOT NULL default '',
account varchar(50) NOT NULL default '',
commission varchar(10) default NULL,
paid_flag char(3) default NULL,
roi_code int(11) NOT NULL default '0',
roi_sale int(11) default NULL,
debug_info varchar(100) default NULL,
ip varchar(15) default NULL,
referer varchar(200) default NULL,
user_agent varchar(200) default NULL,
subid varchar(50) default NULL,
ad_id INT(11) default NULL,
group_id INT(11) default NULL,
country varchar(100) default NULL,
PRIMARY KEY (hit_id),
KEY jhcl_date(hit_date),
KEY jhcl_src(hit_date,ppc_engine),
KEY jhcl_id(hit_date,link_id),
KEY jhcl_acct(hit_date,account),
KEY jhcl_aff(hit_date,affiliate),
KEY jhcl_word(hit_date,word),
KEY jhcl_camp_id(link_id),
KEY jhcl_group_id(group_id),
KEY jhcl_ad_id(ad_id)
)
"내 검색 및 클릭 로깅을 위해 매월 새 테이블을 만들고 있습니다."- 좋은 디자인이 아닙니다 ... 높은 CPU는 종종 많은 테이블 스캔을 나타내므로 적절한 색인을 만드는 것이 좋습니다. –
특정 인덱스가있는 특정 쿼리와 같이 문제의 세부 정보를 제공하지 않으면이 질문에 대답 할 수 없습니다. 우리는 마음을 읽을 수 없습니다. – mvp
예,하지만 색인은 무엇입니까? 개요? 검색어? –