具有组合唯一索引的视图上的全文索引

时间:2014-08-08 12:21:49

标签: sql search view indexing full-text-search

更新:我从来没有找到解决方案,所以我以不同的方式解决了这个问题。我现在将可搜索的数据复制到另一个表(引用我的第一个表)并在该数据上添加了全文索引。效果很好。


我想在具有多个内部联接的模式绑定视图上创建全文索引。所以我创建了一个独特的聚集索引。

SET ARITHABORT ON
SET CONCAT_NULL_YIELDS_NULL ON
SET QUOTED_IDENTIFIER ON
SET ANSI_NULLS ON
SET ANSI_PADDING ON
SET ANSI_WARNINGS ON
SET NUMERIC_ROUNDABORT OFF

CREATE UNIQUE CLUSTERED INDEX [ClusteredIndex_OnID] ON [dbo].[MyView]
(
    [ID] ASC,
    [OtherTableID] ASC,
    [YetAnotherTableID] ASC,
    [SomeTableID] ASC
)

我必须创建一个组合索引,因为我有一对多的引用。 但是当我尝试创建全文索引时,我得到了臭名昭着的“必须在此表/视图上定义唯一列”。错误信息。

为什么呢?有办法解决这个问题吗?

观点:

CREATE VIEW [dbo].[TransportView]
WITH SCHEMABINDING 
AS
SELECT        t.ID, t.BookingNr, t.CreatedBy, t.UpdatedBy, t.UpdatedByToken, t.EjerVirksomhed, t.InteressentVirksomhed, t.KundeVirksomhed, t.Disponent, t.Tilstand, t.FragtbrevNummer, t.ExternalBookingId, t.BookingDato, 
                         t.ModtagerTelefonnummer, t.ConvertedTime, t.OprettetFraFragtbrev, t.FragtbrevMangler, t.IsSynchronized, t.Tag, t.BestillerTelefonnummer, t.AfsenderReference, t.Reference1, t.Reference2, t.Reference3, 
                         t.Reference4, t.FragtBetaler, t.Mandag, t.Tirsdag, t.Onsdag, t.Torsdag, t.Fredag, t.BookingNummer, t.Fragtbrevsnumre, t.Created, t.Updated, t.LastUsedAsStaaende, t.TransportStatus, t.Oprindelsessted, 
                         t.FragtbrevForAlle, t.Frankatur, t.GeoLookupDone, t.Modtagerkundenummer, t.Natlevering, t.Returgods, t.BookingImporttype, t.ServiceKode, t.SkjultForDisponenter, t.IsKurer, t.Tags, t.StatusReplyQueue, 
                         t.ModtagerÅbningstid, t.LaesseBemaerkning, t.BookingContentVersion, t.BookingVersion, t.BookingOpdateret, t.TransportType, t.OprindeligTransportType, t.MasterBookingNummer, t.Fragtbrevstype, 
                         t.Bestillerkundenummer, t.Partigods, t.LossesIHal, t.PartigodsFraFC1, t.EjendeVirksomhed, t.DisponerendeVirksomhed, t.HijackedBy, t.HijackedTimestamp, t.BestillerFirmaNavn, t.BestillerAdresse, 
                         t.BestillerStednavn, t.BestillerPostnummer, t.BestillerBy, t.BestillerLand, t.BestillerFirmaTelefon, t.BestillerKontaktNavn, t.BestillerKontaktTelefon, t.BestillerKontaktEmail, t.BestillerKOBNr, t.BestillerRef1, 
                         t.BestillerLat, t.BestillerLon, t.BestillerLatLonPrecision, t.BestillerAdresseHashCode, t.AfhentningFirmaNavn, t.AfhentningFirmaNavn2, t.AfhentningAdresse, t.AfhentningStednavn, t.AfhentningPostnummer, 
                         t.AfhentningBy, t.AfhentningLand, t.AfhentningFirmaTelefon, t.AfhentningKontaktNavn, t.AfhentningKontaktTelefon, t.AfhentningKontaktEmail, t.AfhentningBemaerkning, t.AfhentningBemaerkning2, 
                         t.AfhentningLoadPoint, t.AfhentningLat, t.AfhentningLon, t.AfhentningLatLonPrecision, t.AfhentningAdresseHashCode, t.ModtagerFirmaNavn, t.ModtagerFirmaNavn2, t.ModtagerAdresse, t.ModtagerStednavn, 
                         t.ModtagerPostnummer, t.ModtagerBy, t.ModtagerLand, t.ModtagerFirmaTelefon, t.ModtagerKontaktNavn, t.ModtagerKontaktTelefon, t.ModtagerKontaktEmail, t.ModtagerBemaerkning, t.ModtagerBemaerkning2, 
                         t.ModtagerUnloadPoint, t.ModtagerLat, t.ModtagerLon, t.ModtagerLatLonPrecision, t.ModtagerAdresseHashCode, t.ModtagerAabningstid, t.ModtagerLukketid, t.AfsenderNavn, t.AfsenderNavn2, t.AfsenderAdresse, 
                         t.AfsenderAdresse2, t.AfsenderPostnummer, t.AfsenderBy, t.AfsenderLand, t.AfsenderTelefon, t.AfsenderEmail, t.AfsenderKundenummer, t.AfsenderKontaktperson, t.TransportDataBemaerkning, 
                         t.TransportDataBemaerkning2, t.TransportDataFragtbrevsBemaerkning, t.TransportDataTotalPallepladser, t.TransportDataTotalLadMeter, t.TransportDataFM1Rute, t.TransportDataFM2Rute, t.TransportDataFC1, 
                         t.TransportDataFC1Navn, t.TransportDataFC2, t.TransportDataFC2Navn, t.TransportDataByttepaller, t.TransportDataHelpaller, t.TransportDataHalvpaller, t.TransportDataKvartpaller, 
                         t.TransportDataForsendelsestype, t.TransportDataTvungenColliscanning, t.TransportDataEfterkravBeloeb, t.TransportDataEfterkravValuta, t.TransportDataEfterkravKontant, t.TransportDataForsikringType, 
                         t.TransportDataForsikringBeloeb, t.TransportDataForsikringValuta, t.TransportDataMaerkeNr, ben.TransportBenId, ben.BookingNrB, ben.FragtbrevnummerB, ben.BookingDatoB, ben.TurNr, ben.UpdatedTime, 
                         ben.UpdatedByB, ben.TransportBenNummer, ben.Type, ben.ExternalBookingIdB, ben.CreatedB, ben.TilstandB, ben.Label, ben.LaesseZone, ben.Status, ben.StatusText, ben.Chauffoer, ben.Tur, ben.SendtTilPda, 
                         ben.TidsAfhentning, ben.Tidslevering, ben.Lat, ben.Lon, ben.Sampletime, ben.DelafhentningAfhentet, ben.DelafhentningRest, ben.TidsLeveringTidligstDato, ben.TidsLeveringTidligstTid, 
                         ben.TidsLeveringSenestDato, ben.TidsLeveringSenestTid, ben.ETARequired, ben.AdviceOnETA, ben.SMSAdvisering, ben.EMailAdvisering, ben.Rute, ben.Fragtcentralkode, ben.PictureCount, ben.AfhSenestDato, 
                         ben.AfhSenestTID, ben.AfhTidligstDato, ben.AfhTidligstTID, ben.TransportSortOrder, ben.Materielnummer, ben.MaterielType, ben.EksterntMateriel, ben.UpdatedB, ben.Afhentningstid, ben.Klartid, ben.Lukketid, 
                         ben.OprindeligKlartid, ben.OprindeligLukketid, ben.LeveringDato, ben.LeveringKlartid, ben.LeveringLukketid, ben.OprindeligLeveringDato, ben.OprindeligLeveringKlartid, ben.OprindeligLeveringLukketid, 
                         ben.BookingDato_ForSearch, ben.SavedHash, ben.FaktiskLeveringDato, ben.FaktiskLeveringTid, ben.OprindeligMaterielnummer, ben.OprindeligEksterntMateriel, ben.TildeltUdkoerendeAnsvarlig, 
                         ben.Placeringsbeskrivelse, ben.ExcludeFromBundles, ben.IsInBundle, ben.BundleGuid, ben.DesignatedList, ben.Videresendt, ben.SliptidCountDownStarted, ben.SliptidElapsedSeconds, ben.HasBounced, 
                         ben.SliptidUdloeber, ben.SliptidEnabled, ben.EjendeVirksomhedB, ben.DisponerendeVirksomhedB, ben.OprindeligDisponerendeVirksomhed, ben.InteressentVirksomhedB, ben.KundeVirksomhedB, 
                         ben.DisponentB, ben.DisponentName, god.TransportGodsId, god.BookingNrG, god.Antal, god.Art, god.Indhold, god.Vaegt, god.Rumfang, god.Ladmeter, god.Laengde, god.Bredde, god.Hoejde, god.Stabelbar, 
                         god.MarkAndNumber, [var].TransportGodsVarelinjeId, [var].V_GodsId, [var].IndholdGv, [var].AntalGv, [var].VaegtGv, [var].LBH, [var].Ekstra
FROM            dbo.Transport AS t INNER JOIN
                         dbo.TransportBen AS ben ON t.BookingNr = ben.BookingNrB INNER JOIN
                         dbo.TransportGods AS god ON t.BookingNr = god.BookingNrG INNER JOIN
                         dbo.TransportGodsVarelinje AS [var] ON god.TransportGodsId = [var].V_GodsId

1 个答案:

答案 0 :(得分:0)

您需要为VIEW创建主键或唯一索引。

如果要在表或视图上创建全文搜索,它必须具有唯一的,单列,不可为空的索引。

这是您收到错误的原因。

我强烈建议您观看有关索引视图的视频 Very Good Video on Indexed views

请检查以下链接。 这个链接肯定会帮助你。 Detailed Full Text Information