I store string prefixes in my SQL Server table, I want to find out if any of these values โโis a valid prefix for a given parameter value.
eg. Suppose I have a list of phone calls without calls, and it includes an entry prohibiting all phone calls to numbers starting with " 1425123", instead of inserting 10,000 numbers ( 14251230000in 14251239999), instead it saves the prefix.
Same:
CREATE TABLE Prefixes (
Value varchar(10)
)
CREATE INDEX IX_Value UNIQUE Prefixes ( Value )
Evaluated as follows:
DECLARE @value varchar(10) = 'foobar'
SELECT
*
FROM
Prefixes
WHERE
@value LIKE ( Value + '%' );
Azure SQL SQL Server Management Studio, , . 70 000 Azure SQL S1 200 500 . .
(Value = @value) .
200-500 .
- Trie ( ), - :
DECLARE @v1 varchar(1) = LEFT( @value, 1 )
DECLARE @v2 varchar(2) = LEFT( @value, 2 )
DECLARE @v3 varchar(3) = LEFT( @value, 3 )
DECLARE @v4 varchar(4) = LEFT( @value, 4 )
DECLARE @v5 varchar(5) = LEFT( @value, 5 )
DECLARE @v6 varchar(6) = LEFT( @value, 6 )
DECLARE @v7 varchar(7) = LEFT( @value, 7 )
DECLARE @v8 varchar(8) = LEFT( @value, 8 )
DECLARE @v9 varchar(9) = LEFT( @value, 9 )
SELECT
*
FROM
Prefixes
WHERE
Value = @v1 OR
Value = @v2 OR
Value = @v3 OR
Value = @v4 OR
Value = @v5 OR
Value = @v6 OR
Value = @v7 OR
Value = @v8 OR
Value = @v9
, ( Index Seek), , , 10 , ... .
? , SQL Server , (.. , SQL)?