J'ai une base de données SQL Server 2008. Cette base de données a 2 tables:Comment améliorer la recherche en texte intégral
Manufacturer
------------
ID,
Name nvarchar(256)
Product
-------
ID
ManufacturerID
Name nvarchar(256)
Mon application a un champ de recherche. Je ne sais pas si l'utilisateur va fournir un nom de fabricant ou un nom de produit. De plus, j'essaie d'être un peu gracieux et de gérer les fautes d'orthographe. Dans un effort pour répondre à ce critère, j'utilise la fonction CONTAINSTABLE. Avec cette fonction, je l'ai créé la requête suivante:
SELECT
*
FROM
[Manufacturer] m
INNER JOIN [Product] p ON m.[ID]=p.[ManufacturerID]
INNER JOIN CONTAINSTABLE(Manufacturer, Name, @searchQuery) r ON m.[ID]=r.[Key]
ORDER BY
r.[Rank]
Ma requête effectue très lent avec la fonction CONTAINSTABLE. Sans le second INNER JOIN, la requête s'exécute en moins d'une seconde. Avec le second INNER JOIN inclus, la requête s'exécute en un peu plus de 30 secondes (trop long).
Quelqu'un peut-il fournir des recommandations de performance? Je n'ai aucune idée de comment surmonter cet obstacle.
Merci,
Nous vous remercions de votre réponse. Je sélectionne seulement les champs dont j'ai besoin. En outre, les index sont déjà définis. Voilà pourquoi je suis tellement confus par cela. – Villager
Vous exécutez SELECT * - est-ce vraiment tout ce dont vous avez besoin? – Tobiasopdenbrouw