sql >> Database teknologi >  >> RDS >> Sqlserver

SQL Server 2008 personsøgningsmetoder?

Den følgende T-SQL-lagrede procedure er meget effektiv implementering af personsøgning. SQL-optimeringsværktøjet kan finde det første ID meget hurtigt. Kombiner dette med brugen af ​​ROWCOUNT, og du har en tilgang, der både er CPU-effektiv og læseeffektiv. For en tabel med et stort antal rækker slår den bestemt enhver tilgang, som jeg har set ved at bruge en midlertidig tabel eller tabelvariabel.

NB:Jeg bruger en sekventiel identitetskolonne i dette eksempel, men koden virker på enhver kolonne, der er egnet til sidesortering. Sekvensbrud i den anvendte kolonne påvirker heller ikke resultatet, da koden vælger et antal rækker i stedet for en kolonneværdi.

EDIT:Hvis du sorterer på en kolonne med potentielt ikke-unikke værdier (f.eks. Efternavn), skal du tilføje en anden kolonne til Ordre efter-sætningen for at gøre sorteringsværdierne unikke igen.

CREATE  PROCEDURE dbo.PagingTest
(
    @PageNumber int,
    @PageSize int
)
AS

DECLARE @FirstId int, @FirstRow int

SET @FirstRow = ( (@PageNumber - 1) * @PageSize ) + 1
SET ROWCOUNT @FirstRow

-- Add check here to ensure that @FirstRow is not
-- greater than the number of rows in the table.

SELECT   @FirstId = [Id]
FROM     dbo.TestTable
ORDER BY [Id]

SET ROWCOUNT @PageSize

SELECT   *
FROM     dbo.TestTable
WHERE    [Id] >= @FirstId
ORDER BY [Id]

SET ROWCOUNT 0
GO 


  1. LOAD DATA INFILE tilsvarende i Oracle

  2. ClusterControl 1.5 - Automatisk sikkerhedskopieringsbekræftelse, byg slave fra sikkerhedskopiering og skyintegration

  3. Få mest muligt ud af dine PostgreSQL-indekser

  4. Brug COLUMNPROPERTY() til at returnere kolonne- eller parameteroplysninger i SQL Server