sql >> Databasteknik >  >> RDS >> Sqlserver

SQL Server 2008 personsökningsmetoder?

Följande T-SQL lagrad procedur är mycket effektiv implementering av personsökning. SQL-optimeraren kan hitta det första ID:t mycket snabbt. Kombinera detta med användningen av ROWCOUNT, så har du ett tillvägagångssätt som är både CPU-effektivt och läseffektivt. För en tabell med ett stort antal rader överträffar det verkligen alla metoder som jag har sett med en temporär tabell eller tabellvariabel.

OBS:Jag använder en sekventiell identitetskolumn i det här exemplet, men koden fungerar på vilken kolumn som helst som är lämplig för sidsortering. Sekvensbrytningar i kolumnen som används påverkar inte resultatet eftersom koden väljer ett antal rader snarare än ett kolumnvärde.

EDIT:Om du sorterar på en kolumn med potentiellt icke-unika värden (t.ex. Efternamn), lägg sedan till en andra kolumn i Ordningsby-satsen för att göra sorteringsvärdena unika 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. Aktivera Python för att ansluta till MySQL via SSH Tunneling

  2. Välj Fråga för att hämta rader i MySQL

  3. Vikten av att upprätthålla en HIPAA-kompatibel databas

  4. Uppgradering till PostgreSQL 11 med logisk replikering