Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 加入此查询的最佳方式_Mysql_Performance - Fatal编程技术网

Mysql 加入此查询的最佳方式

Mysql 加入此查询的最佳方式,mysql,performance,Mysql,Performance,我有以下表格和数据: 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 (primary

我有以下表格和数据:

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的性能开始显著下降

如果有人能提出查询这些数据并获得所需输出的最佳方法,我将不胜感激


感谢您在问题中显示的特定值,此查询就可以了

SELECT q2.primaryid, q_1, q_2, q_4, q_5 FROM questions_101_200 q2
CROSS JOIN questions_1_100 

但是你的数据和结构对我来说没有多大意义。如果你解释一下你想做什么,我可以给你一个更有意义的答案。

你可以尝试索引关键列。表
问题\u 1\u 100
与其他两个表有什么关系?通过哪列?索引会有所帮助,但我担心的是,您提到的子查询与我猜测的那些表如何连接在一起一样,不需要子查询。如果您使用的是相关子查询,那么这也可以解释性能不佳的原因。您好,谢谢您的回复。这个查询的基础是在另一个线程中讨论的:stackoverflow.com/questions/16237669/mysql-join-very-slow我想我应该启动一个新线程,因为这是原始问题的一个单独部分。我同意表结构没有多大意义。本质上q_1是一个ID列-例如patientID。。。。q_4也是另一个id问题。。。例如,患者就诊。。。一名患者可以多次就诊。。。。我知道理想情况下,这些表的结构是正确的,但是这是一个松散的结构,主表具有键值对。希望这一切都有意义!!!Marjeta,交叉连接似乎做到了这一点。我以前从未见过这种情况。我会立即调查此事!!!非常感谢!实际上它在这个例子中是有效的,但是当有多个主题和多次访问时,它就不再有效了。谢谢Marjeta,请在上面的其他答案中查看更多信息。