〜百万のMACアドレスをより効率的に生成する方法はありますか?
これが私が行っていることですが、100万個のMACアドレスを生成してテーブルに挿入するのに約10分かかります。
DECLARE @StartRange BINARY(6)
DECLARE @EndRange BINARY(6)
SET @StartRange = 0x0036D1F00000
SET @EndRange = 0x0036D1FFFFFF
--select convert(bigint,+ @EndRange) - convert(bigint,+ @StartRange) = 1048575
WHILE(convert(bigint, (SELECT IDENT_CURRENT('Mac_Address'))) < (convert(bigint, @EndRange) - convert(bigint, @StartRange)))
BEGIN
insert into Mac_Address (MacAddress)
select convert(BINARY(6),(convert(bigint, (SELECT IDENT_CURRENT('Mac_Address'))) + convert(bigint, @StartRange)))
END
これは私がこれを行うためにオンラインで見つけたコードであり、数秒で実行されます。ただし、MACアドレスをシステムテーブルに生成しています。
DECLARE @StartRange BINARY(8)
DECLARE @EndRange BINARY(8)
SET @StartRange = 0x00000004A500114B
SET @EndRange = 0x00000004A50F11FF
--select convert(integer,+ @EndRange) - convert(integer,+ @StartRange) = 983220
select convert(BINARY(8),RW + convert(integer, @StartRange))
from
(select row_number() over(order by a.id) As RW from syscolumns,syscolumns a,syscolumns b ,syscolumns c) b --I do not understand this line very well.
where RW between 1 and (convert(integer, @EndRange) - convert(integer, @StartRange))