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

Базиран на функции индекс в SQL SERVER 2005

Ще трябва да добавите изчислена колона

Alter Table BEER_HERE Add Column XBEER_DATE As dbo.TRUNCATE_DATE(BEER_DATE)

След това можете да го индексирате, както очаквате.

Вашата функция обаче трябва да бъде детерминистична и прецизна, както е дефинирано в http://msdn.microsoft.com/en-us/library/ms189292(v=sql.90).aspx . Вашата функция трябва да отговаря на тези изисквания, но може да се наложи да добавите With SchemaBinding към дефиницията на функцията.

Може също да можете да използвате изглед

Create View V_BEER_HERE As Select BEER_CODE, BEER_DATE, dbo.TRUNCATE_DATE(BEER_DATE) As XBEER_DATE From BEER_HERE
Create Unique Clustered Index PK_V_BEER_HERE On V_BEER_HERE (BEER_CODE)
Create Index I_XBEER_DATE On V_BEER_HERE (XBEER_DATE)

Нещата, които вмъкват, пишат в таблицата, нещата, които четат, четат от изгледа. Това зависи от това, че BEER_CODE е първичен ключ.

SQL Server няма базирани на функции индекси, както Oracle прави.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. T-SQL:CTE с колони за идентичност

  2. Как да съхранявате пароли в базата данни сигурно?

  3. Стойността на колоната за идентичност изведнъж скача до 1001 в sql сървъра

  4. Как да свържете много редове със същия идентификатор в sql?

  5. Актуализация с множество условия. SQL 2008