优化数字数据库的SQL语句
我有一个超过一百万个数字的列表。我需要将数字放在一个数字排序的表中,另一个是,参考排序数字的ID,该表的结构如下: 分类号码优化数字数据库的SQL语句,sql,sql-server,Sql,Sql Server,我有一个超过一百万个数字的列表。我需要将数字放在一个数字排序的表中,另一个是,参考排序数字的ID,该表的结构如下: 分类号码 Id | SortedNumber 1 01356 2 45789 数字 Id | Number | SortedNumberId 1 35601 1 2 94578 2 3 97548 2 目前,我正在先填充排序数字表,然后填充标准数字表,并执行select语句以获取排序数字Id。但是,所有这些select语句都使其速
Id | SortedNumber
1 01356
2 45789
数字
Id | Number | SortedNumberId
1 35601 1
2 94578 2
3 97548 2
目前,我正在先填充排序数字表,然后填充标准数字表,并执行select语句以获取排序数字Id。但是,所有这些select语句都使其速度变慢,有没有一种方法可以在一个语句中完成这一切,而决不使用select语句获取排序数字的Id
在循环的每次迭代中,sortedNumber的当前查询是通过对代码中的数字进行排序来完成的
回路1
query = "INSERT into SortedNumbers VALUES (" + SortedNumber + ")";
环路2
query = "SELECT Id FROM SortedNumbers WHERE SortedNumber = " + sortedNumber;
query = "INSERT into Numbers VALUES (" + Number + ", " + SortedId + ")";
首先,你不需要将排序后的数字放入数据库。将数字放入表中,然后根据所需的排序条件查询表顺序
SELECT number from table ORDER BY number
但我想无论你想做什么,我都没有抓住重点。您可以发布一些示例吗?您可以将两个插入内容包装到一个事务中,并通过调用SCOPE\u IDENTITY从sortedNumbers表中获取ID值。假设SortedNumber表中的ID列是标识列:
BEGIN TRANSACTION
INSERT sortedNumbers (SortedNumber) VALUES (sortednumbervalue)
INSERT Numbers (Number, SortedNumberId) VALUES (numbervalue, SCOPE_IDENTITY())
COMMIT
听起来这与SQL查询的关系不大,而与表上缺少索引的关系更大。是的,但如果没有查询,谁知道呢?询问代码的问题必须表明对正在解决的问题的最低理解。包括尝试的解决方案,以及它们不起作用的原因。这很好,但如果在循环的后面,一个数字与前面插入的数字具有相同的排序值,该怎么办?