- #eecs
急!关于数据库检索效率优化的问题

14424
最近在公司用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 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 mailpiece_id, varchar(100) NOT NULL table 3: redirections: sortcode, varchar(100) NOT NULL(PK : sortcode + mailpiece_id) 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) 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); 如果有什么描述不清楚的地方麻烦各位留言,我会尽快回复,急!!!谢谢各位!!{:4_108:}{:4_108:} |
补充内容 (2016-4-6 05:20):
一旦关联表redirections,检索就会变得非常慢,倘若把query 第三行SELECT mailpiece_id FROM redirections 替换成SELECT mailpiece_id FROM sortcodes INNER JOIN sortcode_sequence USING (sequence_id)就会很快
补充内容 (2016-4-6 05:22):
接上面的补充,但是整个检索结果又必须匹配表redirections里面的mailpiece_id,是不是因为这张表的PK是两列合成,如果把mailpiece_id设置成INDEX会不会好一些,恳请大家解答一下
4条回复
热度排序