我想基于一个表中的值是否落入另一个表中的一个区间来创建两个表之间的关系。一个表1是~16000行:
name | start | end
-----------------------------------------
someName | startPosition | endPosition
表2是~20000000行:
id | location
--------------------------
someID | positionInteger
每个id都落在一个名称的间隔中,但每个名称可以包含许多与之关联的ID。
我想在表2中添加一个新索引,使其成为:
id | location | name
---------------------------------
someID | positionInteger | someName
我尝试过:
ALTER TABLE table2 ADD INDEX name (name);
有了一点python,我可以获取数据库中的所有名称,然后获取每个名称和间隔:
SELECT someID FROM table2 WHERE location >= startPosition AND location <= endPosition
然后我可以遍历生成的ID并:
UPDATE table2 SET name = 'someName' WHERE id = 'someID'
这有效,但速度很慢。是否有更有效的方法使用MySQL并避免多个循环?
答案 0 :(得分:0)
加入表格
cxt.Students.Add(st);
您不应该向表2添加索引,您应该添加一列:
SELECT t2.id, t2.location, t1.name
FROM Table1 AS t1
JOIN Table2 AS t2 ON t2.location BETWEEN t1.startPosition AND t1.endPosition
然后,您可以使用类似的连接更新所有行:
ALTER TABLE Table2 ADD COLUMN name VARCHAR(32); -- Replace this with the actual size
答案 1 :(得分:0)
您可以使用enter the gallons used: 12.8
enter starting mileage: 0
enter ending mileage: 277
Miles Driven: 277
Miles Per Gallon: 21.6406
enter the gallons used: -1
enter starting mileage:
:
LEFT JOIN