我有以下表和数据:最佳方式加入此查询
Tables
-----------
CREATE TABLE primarys
(primaryid BIGINT(20) NOT NULL AUTO_INCREMENT,
PRIMARY KEY (primaryid));
CREATE TABLE patients
(primaryid BIGINT(20) NOT NULL,
patientid BIGINT(20),
patientName VARCHAR(50),
PRIMARY KEY (primaryid));
CREATE TABLE patientvisit
(primaryid BIGINT(20) NOT NULL,
visitid BIGINT(20),
visitdate DATE,
PRIMARY KEY (primaryid));
Data
---------
INSERT INTO primarys values (1);
INSERT INTO primarys values (7286);
INSERT INTO primarys values (7287);
INSERT INTO patients VALUES (1,'1','John');
INSERT INTO patients VALUES (7286,'1', '');
INSERT INTO patients VALUES (7287,'1', '');
INSERT INTO patientvisit VALUES (7286,'1','1997-12-18');
INSERT INTO patientvisit VALUES (7287,'2','1998-02-25');
我需要写输出数据,如下所示的查询:
primaryid | patientid | patientname | visit | visitdate
------------------------------------------------
7286 | 1 | John | 1 | 1997-12-18
7287 | 1 | John | 2 | 1998-02-25
我能想出如何使用外部连接和子查询可以很好地工作,但是当我开始添加大型数据集时,mysql性能开始显着下降。
如果有人能提出最优化的方式来查询这些数据并获得所需的输出,我将不胜感激。
谢谢
您可以尝试索引键列。 – kwelsan 2013-05-03 11:00:29
桌子“questions_1_100”与其他桌子有什么关系?通过哪一列? – 2013-05-03 11:06:26
索引会有所帮助,但是我担心你提到的子查询与我的猜测一样,如何将这些表连接在一起不需要子查询。如果你使用的是相关的子查询,那么这也可能解释了糟糕的性能。 – Kickstart 2013-05-03 12:58:31