我正在创建广告系列跟踪网站。这有100张桌子。我正在为每个月创建一个新表,用于使用CREATE TABLE IF NOT EXISTS
记录我的搜索和点击次数(该表包含23个字段和9个索引。)。我的客户抱怨这个查询他们告诉它占用了很多CPU。它在每个请求上运行。但是如果它不存在,我就创建了这个表,即每月一次。这会增加CPU使用率吗?如果是,在这种情况下有没有办法减少CPU使用率?
编辑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)
)
答案 0 :(得分:0)
将CREATE TABLE IF NOT EXISTS
放置到cron作业/计划任务,并在每天00.00运行它。然后查询将每天只运行一次。当您创建一个新表时,将其添加到单独的表(例如 table_list ),您可以在其中保留您创建的表的列表。
然后首先检查table_list以检查是否已创建当月的表。如果您无法在“ table_list ”中找到该表,则可以创建新表。