我有一个很大的表,并决定通过从另一个表中引入一个具有ID的新列并删除其他两个列来减小其大小。这些是表格:
Table tests:
+---------------+----------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------------+----------------------+------+-----+---------+----------------+
| id | bigint(20) unsigned | NO | PRI | NULL | auto_increment |
| ml | varchar(16) | NO | | NULL | |
| test_num | smallint(5) unsigned | NO | | NULL | |
........
Table data:
+-----------+----------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------+----------------------+------+-----+---------+----------------+
| id | bigint(20) unsigned | NO | PRI | NULL | auto_increment |
| test_id | bigint(20) unsigned | NO | | NULL | |
| ml | varchar(16) | NO | | NULL | |
| test_num | smallint(5) unsigned | NO | | NULL | |
........
因此,我在表{{1}中添加了新列test_id
,并想用data
中的id
填充它,然后删除列tests
和{{ 1}}。
我尝试使用ml
来做到这一点:
test_num
此查询工作了三个小时,所以我取消了查询并尝试了另一个查询:
join
它执行了四个小时,我不知道它是否会在可预见的时间内完成。我的问题是:这些查询是否正确,更有效?还有其他方法可以满足我的需求吗?
答案 0 :(得分:1)
您的查询速度很慢,因为您在联接中使用的列上没有索引,假设您有大量的数据。
var shortlist = list.Take(2).ToSortedList();
尝试添加索引,因为它也会减少以后查询的执行时间。