classements (.NET 3.5 SP1, VS 2008, VB.NET, MSSQL Server 2008)ralentissement des performances lors de l'utilisation Unicode
J'écris une petite application Web pour tester les Khmers Unicode et Lao Unicode. J'ai une table qui stockent du texte en Unicode Khmer avec la structure suivante:
[t_id] [int] IDENTITY(1,1) NOT NULL
[t_chid] [int] NOT NULL
[t_vn] [int] NOT NULL
[t_v] [nvarchar](max) NOT NULL
Je peux utiliser LINQ to SQL pour faire CRUD normalement. Le texte s'affiche correctement sur la page Web, même si je n'ai pas modifié le classement par défaut de MSSQL Server 2008.
En ce qui concerne la recherche dans la colonne [t_v], la mise en charge de la page prend beaucoup de temps. en fait, il charge chaque rangée de cette colonne. Il ne se compare jamais au critère «mot clé» que j'utilise pour la recherche. Voici ma requête pour la recherche:
Public Shared Function SearchTestingKhmerTable(ByVal keyword As String) As DataTable
Dim db As New BibleDataClassesDataContext()
Dim query = From b In db.khmer_books _
From ch In db.khmer_chapters _
From v In db.testing_khmers _
Where v.t_v.Contains(keyword) And ch.kh_book_id = b.kh_b_id And v.t_chid = ch.kh_ch_id _
Select b.kh_b_id, b.kh_b_title, ch.kh_ch_id, ch.kh_ch_number, v.t_id, v.t_vn, v.t_v
Dim dtDataTableOne = New DataTable("dtOne")
dtDataTableOne.Columns.Add("bid", GetType(Integer))
dtDataTableOne.Columns.Add("btitle", GetType(String))
dtDataTableOne.Columns.Add("chid", GetType(Integer))
dtDataTableOne.Columns.Add("chn", GetType(Integer))
dtDataTableOne.Columns.Add("vid", GetType(Integer))
dtDataTableOne.Columns.Add("vn", GetType(Integer))
dtDataTableOne.Columns.Add("verse", GetType(String))
For Each r In query
dtDataTableOne.Rows.Add(New Object() {r.kh_b_id, r.kh_b_title, r.kh_ch_id, r.kh_ch_number, r.t_id, r.t_vn, r.t_v})
Next
Return dtDataTableOne
End Function
S'il vous plaît noter que j'utilise la conception exacte même code et la base de données avec Lao Unicode et il fonctionne très bien. Je reçois la requête renvoyée comme prévu pour la recherche.
Je ne peux pas comprendre quel est le problème avec la recherche de requête dans la table khmer.
J'ai utilisé la Linq suivante pour se joindre à la table:
Dim query = From b In db.khmer_books _
Join ch In db.khmer_chapters On b.kh_b_id Equals ch.kh_book_id _
Join v In db.testing_khmers On ch.kh_ch_id Equals v.t_chid _
Where v.t_v.Contains(keyword) _
Select b.kh_b_id, b.kh_b_title, ch.kh_ch_id, ch.kh_ch_number, v.t_id, v.t_vn, v.t_v
Mais j'ai toujours toutes les lignes de cette table. Une idée ? Merci beaucoup.
propriétés de navigation? Je ne comprends pas ça. Pourriez-vous me donner un bloc de code pour la syntaxe de jointure LINQ sur ce problème. Merci beaucoup pour l'apport. –