【发布时间】:2016-11-18 00:29:08
【问题描述】:
你好 我有这两张桌子:
- recording_log(recording_id, lead_id ,length, filename ,location )
- vicidial_list(lead_id, phone_number )
当我将此查询放在 sql 控制台中时,它似乎很慢(> 5 分钟)
SELECT vc.phone_number, vc.lead_id, rl.location, rl.filename FROM `recording_log` as rl
INNER JOIN vicidial_list as vc ON vc.lead_id=rl.lead_id
WHERE vc.phone_number="000021125454" aND length > "550";
我在recording_log(lead_id) 中有索引
并在vicidial_list(lead_id)
CREATE TABLE recording_log (
recording_id int(10) unsigned NOT NULL AUTO_INCREMENT,
filename varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL,
lead_id int(9) unsigned DEFAULT NULL,
user varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL,
vicidial_id varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL,
PRIMARY KEY (recording_id),
KEY filename (filename),
KEY lead_id (lead_id),
KEY user (user),
KEY vicidial_id (vicidial_id)
) ENGINE=MyISAM AUTO_INCREMENT=3417340;
CREATE TABLE vicidial_list (
lead_id int(9) unsigned NOT NULL AUTO_INCREMENT,
phone_number varchar(18) COLLATE utf8_unicode_ci NOT NULL,
list_id bigint(14) unsigned NOT NULL DEFAULT '0',
PRIMARY KEY (lead_id),
KEY phone_number (phone_number),
KEY list_id (list_id)
) ENGINE=MyISAM AUTO_INCREMENT=3531081
【问题讨论】:
-
你有多少行?除非你有一张大桌子,否则五分钟似乎不太可能。请发布您的表格创建语句并注明行数
-
谢谢回复,我有 > 3M 行,这显示创建表 stat..CREATE TABLE
recording_log(recording_idint(10) unsigned NOT NULL AUTO_INCREMENT,filenamevarchar(100)整理 utf8_unicode_ci 默认空值,lead_idint(9) 无符号默认空值,uservarchar(20) 整理 utf8_unicode_ci 默认空值,vicidial_idvarchar(20) 整理 utf8_unicode_ci 默认空值,主键 (@98) 987654334@ (filename), KEYlead_id(lead_id), KEYuser(user), KEYvicidial_id(vicidial_id) ENGINE=MyISAM AUTO=341734 -
这适用于 vicidial_list ;创建表
vicidial_list(lead_idint(9) unsigned NOT NULL AUTO_INCREMENT,phone_numbervarchar(18) COLLATE utf8_unicode_ci NOT NULL,list_idbigint(14) unsigned NOT NULL DEFAULT '0', PRIMARY KEY (@987654346 @), KEYphone_number(phone_number), KEYlist_id(list_id) ) ENGINE=MyISAM AUTO_INCREMENT=3531081 -
有趣的是,您的 CREATE TABLE 语句没有显示查询中出现的长度列 :)
标签: mysql performance select join