注册一亩三分地论坛,查看更多干货!
您需要 登录 才可以下载或查看附件。没有帐号?注册账号
x
最近在公司用Node JS 做网站后台功能,需要关联三张表然后返回所有满足条件的image信息的list,由于程序发布的远端PC配置比较渣,在进行复杂关联检索时,用时比较长,以前数据库在学校学的比较渣,自己确实也不是技术方面的大牛,恳请各位前辈可以给我一些解决建议,自己也可以得到学习,表的具体结构和query如下:
table 1:
image:
image_id, bigint(20) unsigned NOT NULL(PK)
image_path, varchar(512) NOT NULL
mailpiece_id, varchar(100) NOT NULL
scanner_id, enum('BL','BR','FL')
image_type, varchar(100) NOT NULL
. 1point3acres.com source_id, varchar(100) NOT NULL
orientation, tinyint(3) unsigned NOT NULL
table 2 : . ----
mailpiece:
mailpiece_key, bigint(20) unsigned NOT NULL(PK)
mailpiece_id, varchar(100) NOT NULL
tesetset_id, bigint(20) unsigned NOT NULL
image_path, varchar(512) NOT NULL . From 1point 3acres bbs
mailpiece_id, varchar(100) NOT NULL . From 1point 3acres bbs
table 3:
redirections:
sortcode, varchar(100) NOT NULL(PK : sortcode + mailpiece_id) -baidu 1point3acres
mailpiece_id, varchar(100) NOT NULL
redirection_id, bigint(20) NOT NULL
QUERY:
SELECT mailpieces.*, rds.sortcode FROM
(SELECT i.* FROM image i JOIN mailpiece USING (mailpiece_id).1point3acres
WHERE mailpiece_id IN (SELECT mailpiece_id FROM redirections)
AND testset_id = 51 AND (mailpiece_key - 1) % 1 = 0) mailpieces INNER JOIN redirections rds USING (mailpiece_id);
如果有什么描述不清楚的地方麻烦各位留言,我会尽快回复,急!!!谢谢各位!! 
|
.1point3acres
补充内容 (2016-4-6 05:20):
一旦关联表redirections,检索就会变得非常慢,倘若把query 第三行SELECT mailpiece_id FROM redirections 替换成SELECT mailpiece_id FROM sortcodes INNER JOIN sortcode_sequence USING (sequence_id)就会很快
.google и
补充内容 (2016-4-6 05:22):
接上面的补充,但是整个检索结果又必须匹配表redirections里面的mailpiece_id,是不是因为这张表的PK是两列合成,如果把mailpiece_id设置成INDEX会不会好一些,恳请大家解答一下 |