T-SQL, MS SQL Server 2000, Windows 2003, mittelaltes Desktop-Gerät:
-- Tabelle befüllen
declare
@i int
set
@i = 1
while (@i <= 1000000)
begin
--
insert
DT_1
(
DF_1
)
VALUES
(
cast(@i as char(50))
)
set
@i = @i + 1
--
end
--
-- Abfrage mit left()
declare
@StartDate datetime
declare
@EndDate datetime
set
@StartDate = getdate()
select
count(*)
from
DT_1
where
(left(DF_1, 3) = '1')
set
@EndDate = getdate()
print
datediff(millisecond, @StartDate, @EndDate)
--
-- Abfrage mit LIKE
declare
@StartDate datetime
declare
@EndDate datetime
set
@StartDate = getdate()
select
count(*)
from
DT_1
where
(DF_1 like '1%')
set
@EndDate = getdate()
print
datediff(millisecond, @StartDate, @EndDate)
--
LIKE gewinnt (ohne Index) in verschiedenen Varaiationen mit ca. 600ms gegen 500ms. LOL