提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供 中文繁体 英文版本 中英对照 版本,有任何建议请联系yoyou2525@163.com。
我想在两个非常大的表上使用join运行查询。 这个SQL的等效rethinkdb语法是什么?
SELECT t1.uuid,t1.timestamp,t2.name
FROM t1
JOIN t2 ON t1.uuid=t2.uuid AND t1.timestamp=t2.timestamp
对于示例参考,这是表的sql:
CREATE TABLE t1(
id INT NOT NULL AUTO_INCREMENT,
uuid CHAR(30) NOT NULL,
timestamp CHAR(30) NOT NULL,
PRIMARY KEY(id)) ENGINE=INNODB;
CREATE TABLE t2(
id INT NOT NULL AUTO_INCREMENT,
uuid CHAR(30) NOT NULL,
timestamp CHAR(30) NOT NULL,
name CHAR(30) NOT NULL,
PRIMARY KEY(id));
快速而肮脏的解决方案是:
r.table("t1").innerJoin(
r.table("t2"),
function (doc1, doc2) {
return doc1("uuid").eq(doc2("uuid"))
.and(doc1("timestamp").eq(doc2("timestamp")));
}).zip()
但是您可能想在这些字段上创建复合索引
r.table("t1").indexCreate(
"myIndex", [r.row("uuid"), r.row("timestamp")])
r.table("t2").indexCreate(
"myIndex", [r.row("uuid"), r.row("timestamp")])
r.table("t1").eqJoin(
"myIndex",
r.table("t2"),
{index: "myIndex"}
).zip()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.