Bonjour ,
J'ai actuellement une base de données contenant une tabe qui a des millions de données.
Je dois lire toutes les entrées de la table pour rechercher un champs particulier et le champs sur lequel la recherche doit se faire c'est un binaire (donc celà se faire mieux a partir du langage que par la BD).
La structure de ma base données
ID : bigint
Image : varbinary(max)
Je possède une fonction c# qui permet de faire la correspondance entre une image et N ( < 100 000) images (birnaire de la BD).
Donc je dois lire les millions d'image dans ma base de données et passer a ma fonction pour la recherche.
A ce stade j'ai crée une fonction Table donc a structure est la suivante :
Donc le logiciel PC chez l'utilisateur se connecte a la BD et boucle en lisant les données page par page jusqu'a epuissement de la lecture des données ou l'algorithme trouve l'image correspondant.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 CREATEFUNCTION FN_PAGINATION ( -- Add the parameters for the function here @Page int , @Nombre int ) RETURNS TABLE AS RETURN ( WITH T AS (SELECT ID, CAST(Image as varbinary(2048)) AS Image , ROW_NUMBER() OVER (ORDER BY IDDESC) AS sortOrder FROM dbo.TP_Images) SELECT ID,Image FROM T WHERE sortOrder BETWEEN ((@page - 1) * @Nombre) + 1 AND @page * @Nombre ) GO
Déjà je ne sais pas si l'architecture est bonne (client qui se connecte au serveur et récupéré les données pour faire le traitement ).
NB : plusieurs utilisateur sont connecte au même moment.
J'avoue que le temps de réponse est encore tres eleve mon objectif c'est de le reduire.
Avez vous des astuces ?
Partager