3
在兩個值之間生成數字的最快方法是什麼?生成數字範圍的最快方法
例如:
第一個值:6000000
第二個值:7,500,000
我要創建像150萬行下面
6,000,001
6,000,002
.
.
7,500,000
在兩個值之間生成數字的最快方法是什麼?生成數字範圍的最快方法
例如:
第一個值:6000000
第二個值:7,500,000
我要創建像150萬行下面
6,000,001
6,000,002
.
.
7,500,000
這個工作對我來說:
create or alter procedure GET_INTEGER_RANGE (
INICIO integer,
FIN integer)
returns (
ACTUAL integer)
AS
begin
actual = inicio;
while (actual<=fin) do
begin
suspend;
actual = actual +1;
end
end
SELECT * FROM GET_INTEGER_RANGE(6000000,7500000);
不知道這是最快的,但它是唯一我能想到的方式:
with recursive numbers (nr) as (
select 6000000
from rdb$database
union all
select nr + 1
from numbers
where nr < 7500000
)
select *
from numbers;
更新:正如franbenz在評論中指出的那樣,Firebird僅限於1024的遞歸深度,顯然無法改變。所以雖然基本的語法是正確的,但當試圖生成多於1024行時,上述方法將不起作用。
據火鳥2.1語言參考,最大遞歸深度是1024這是影響範圍爲執行上述1024 – franbenz
@franbenz:啊,謝謝。我並不知道這個限制。那當然這沒有幫助。 –