1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
| --Creation d'une table de nombres.
CREATE TABLE tbNumbers
(
Number INT NOT NULL,
CONSTRAINT PK_Numbers PRIMARY KEY CLUSTERED (Number)
WITH FILLFACTOR = 100
)
--Remplissage -> 65536.
INSERT INTO tbNumbers
SELECT (a.Number * 256) + b.Number AS Number
FROM
(SELECT number FROM master..spt_values WHERE type = 'P' AND number <= 255) a (Number),
(SELECT number FROM master..spt_values WHERE type = 'P' AND number <= 255) b (Number)
--Un table de codes d'activation, rajouter un flag bUsed, ...
CREATE TABLE tbCodeActivation(ID int IDENTITY PRIMARY KEY, Guid UNIQUEIDENTIFIER, Code BIGINT)
--Remplissage de cette table avec 1000000 de lignes.
;WITH CTE (Guid) AS
(
SELECT NEWID()
FROM
(SELECT Number FROM dbo.tbNumbers WHERE Number <= 49999) a CROSS JOIN
(SELECT Number FROM dbo.tbNumbers WHERE Number <= 19) b
)
INSERT INTO tbCodeActivation (Guid, Code)
SELECT Guid, ABS(CAST(CAST(Guid AS VARBINARY) AS BIGINT))
FROM CTE
--25 secs sur mon portable
-- Y a t'il des doublons ?
SELECT SUBSTRING(CAST(ABS(Code) AS VARCHAR), 1, 12), Count(*)
FROM tbCodeActivation
GROUP BY SUBSTRING(CAST(ABS(Code) AS VARCHAR), 1, 12)
HAVING COUNT(*) > 1 |
Partager