Bonjour,
Je rencontre un problème lors de l'affichage d'une requête avec beaucoup de données (environs 300 000 lignes)
Le temps de recherche est correct lorsque j'affiche une 100énes de lignes mais quand je charge le tout il faut attendre une bonne 10ènes de minutes.

L'application consiste à afficher une liste de correspondant en fonction des paramètres remplis ou non.

Quand je lance une recherche sans renseigner de champ, j’affiche la totalité de la table soit 300 000 lignes.

J’utilise la commande OracleDatareader pour executer mes requêtes.

Voici la partie connexion et exécution :

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
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
  private void button1_Click(object sender, EventArgs e)
        {
            listView1.Clear();
 
                // Set the view to show details.
                listView1.View = View.Details;
                // Allow the user to edit item text.
                // listView1.LabelEdit = true;
                // Allow the user to rearrange columns.
                listView1.AllowColumnReorder = true;
                // Display check boxes.
                listView1.CheckBoxes = true;
                // Select the item and subitems when selection is made.
                listView1.FullRowSelect = true;
                // Display grid lines.
                listView1.GridLines = true;
                // Sort the items in the list in ascending order.
                listView1.Sorting = SortOrder.Ascending;
 
                listView1.Columns.Add("", -2, HorizontalAlignment.Left);
                listView1.Columns.Add("Titre", -2, HorizontalAlignment.Left);
                listView1.Columns.Add("Nom", -2, HorizontalAlignment.Left);
                listView1.Columns.Add("Prénom", -2, HorizontalAlignment.Left);
                listView1.Columns.Add("Nom Marital", -2, HorizontalAlignment.Left);
                listView1.Columns.Add("Sexe", -2, HorizontalAlignment.Left);
                listView1.Columns.Add("Commune", -2, HorizontalAlignment.Left);
                listView1.Columns.Add("CP", -2, HorizontalAlignment.Left);
                listView1.Columns.Add("Crée le", -2, HorizontalAlignment.Left);
                listView1.Columns.Add("Service", -2, HorizontalAlignment.Left);
                listView1.Columns.Add("Matricule", -2, HorizontalAlignment.Left);
 
                string oradb = "Data Source=ma source;User Id=mon id;Password=mon mdp;";
                OracleConnection conn = new OracleConnection(oradb);  
                conn.Open();
                OracleCommand cmd = new OracleCommand();
                cmd.Connection = conn;
 
                cmd.CommandText = "select ma requete from ma table'";
                cmd.CommandType = CommandType.Text;
                OracleDataReader dr = cmd.ExecuteReader();
                ListViewItem it = new ListViewItem();
                int i = 0;
                int j = 0;
                while (dr.Read())
                {
 
                    ListViewItem items = new ListViewItem("", i);  //Ajoute un item 
 
                    for (j = 0; j <= dr.FieldCount - 1; j++)
                    {
 
                        if (dr[j] != DBNull.Value)
                        {
 
 
                                items.SubItems.Add(dr.GetString(j).ToString()); //Ajoute le champ i dans item i
 
                        }
                        else
                        {
                            items.SubItems.Add("");
                        }
 
                    }
 
                    listView1.Items.AddRange(new ListViewItem[] { items });
 
                    i++;
                }
 
 
                foreach (ColumnHeader column in listView1.Columns)
                {
                    column.Width = -2;
                }
 
                conn.Close();
 
 
        }

Y-a-t-il un moyen d'optimiser cette connexion ?

merci d'avance