2

我有一个 sql 查询来从 4 个表中获取值。在我的查询中需要很多时间。我需要简化查询我需要的是我只需要显示 50 条记录。在我的表中,我有 90,000 条记录。所以我决定应用批处理,比如首先从第一个表中选择 50 条记录,然后检查其他 3 个表。如果 50 满意,我会显示,否则我必须继续下一个 50。

但我没有实施的想法

  select file_name, 
         A.id, 
         A.reference, 
         user.username, 
         c.update_date 
    from A_Table A, 
         (select reference 
            from B_Table 
           where code = 'xxx'
           group by reference 
          having count(*) > 1) B, 
         C_Table c, 
         D_Table d
   where A.reference = B.reference
     and A.id = c.id 
     and A.code = 'ICG'
     and c.updated_by = d.user_id  
order by 3 
   limit 20;
4

1 回答 1

2

查询看起来不错。

添加一些索引会有很大帮助。

假设id列 (A_Table.idC_Table.id) 已经是 PRIMARY KEY 列,您不需要为它们编制索引。

ALTER TABLE A_Table
    ADD INDEX (reference),
    ADD INDEX (code);
ALTER TABLE B_Table 
    ADD INDEX (reference),
    ADD INDEX (code, reference);
ALTER TABLE C_Table 
    ADD INDEX (updated_by);
ALTER TABLE D_Table 
    ADD INDEX (user_id);
于 2013-10-24T11:57:04.100 回答