Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Случаен запис от таблица на база данни (T-SQL)

Има ли кратък начин за извличане на произволен запис от таблица на sql сървър?

Да

SELECT TOP 1 * FROM table ORDER BY NEWID()

Обяснение

A NEWID() се генерира за всеки ред и след това таблицата се сортира по него. Първият запис се връща (т.е. записът с "най-ниския" GUID).

Бележки

  1. GUID се генерират като псевдослучайни числа от версия четвърта:

    UUID версия 4 е предназначена за генериране на UUID от наистина произволни или псевдослучайни числа.

    Алгоритъмът е следният:

    • Задайте двата най-значими бита (битове 6 и 7) от theclock_seq_hi_and_reserved съответно на нула и единица.
    • Задайте четирите най-значими бита (битове от 12 до 15) на полето time_hi_and_version на 4-битовия номер на версията от раздел 4.1.3.
    • Задайте всички останали битове на произволно (или псевдослучайно) избрани стойности.

    —Пространство от имена на URN с универсален уникален идентификатор (UUID) – RFC 4122

  2. Алтернативният SELECT TOP 1 * FROM table ORDER BY RAND() няма да работи, както човек би си помислил. RAND() връща една единствена стойност на заявка, като по този начин всички редове ще споделят една и съща стойност.

  3. Въпреки че стойностите на GUID са псевдослучайни, ще ви трябва по-добър PRNG за по-взискателните приложения.

  4. Типичната производителност е по-малко от 10 секунди за около 1 000 000 реда - разбира се в зависимост от системата. Имайте предвид, че е невъзможно да се удари индекс, така че производителността ще бъде относително ограничена.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да прехвърлите DateTime към Time

  2. Как да конвертирате низ в дата/час в SQL Server с помощта на PARSE()

  3. Как да промените име на база данни в SQL Server с помощта на T-SQL

  4. Как да получите следващата стойност на последователността на SQL Server в Entity Framework?

  5. Пакет за настройка на Spotlight Basic:Най-добрият безплатен инструмент за оптимизиране на SQL