Heim > Datenbank > SQL > Was soll ich tun, wenn die SQL-Abfrage zu viele Daten enthält und der Speicher überläuft?

Was soll ich tun, wenn die SQL-Abfrage zu viele Daten enthält und der Speicher überläuft?

(*-*)浩
Freigeben: 2019-10-28 09:53:49
Original
7141 Leute haben es durchsucht

Normalerweise wird diese Situation nicht auftreten, es gibt jedoch keine Garantie, dass diese Situation gelegentlich auftreten wird:

Was soll ich tun, wenn die SQL-Abfrage zu viele Daten enthält und der Speicher überläuft?

Verwenden Sie Paging-Abfrageanweisungen. (Empfohlenes Lernen: MySQL-Lernen )

Da die Paging-Abfrage jedes Mal nur eine kleine Datenmenge abfragt, beansprucht sie nicht zu viel Speicher und die Menge Die Datenmenge ist groß. Manchmal sparen Paging-Abfragen etwas Zeit.

String sql = " SELECT uid,uname  FROM t_user LIMIT ?,? " ;
        PreparedStatement  ps = con.prepareStatement(sql) ;
        int pageSize = 10000; 
        int pageId = 0; 
        do { 
            pst.setInt(1, pageId * pageSize); 
            pst.setInt(2, pageSize); 
            ResultSet rs = pst.executeQuery();

            boolean isEmpty = true; 
            while (rs.next()) { 
                 isEmpty = false; 
                 id = rs.getInt(1); 
                 name = rs.getString(2); 
            } 
            if (isEmpty) { 
                break; 
            } 
            pageId++; 
        } while (true); 
        con.close(); 
    } catch (SQLException e) { 
        e.printStackTrace(); 
    }
Nach dem Login kopieren

URL-Parameterkonfiguration hinzufügen

Fügen Sie zwei Parameter zur JDBC-URL hinzu, dann ist alles in Ordnung und das Speicherüberlaufproblem wird erfolgreich gelöst.

"jdbc:mysql://localhost:3306/db3?useCursorFetch=true&defaultFetchSize=100";
Nach dem Login kopieren

( Erklären Sie Fetch: Wenn wir eine SQL-Abfrageanweisung ausführen, müssen wir einen Cursor sowohl auf dem Client als auch auf dem Server öffnen und jeweils einen Speicherplatz zum Speichern der Abfragedaten beantragen . Ein Puffer. Die Anzahl der in diesem Speicherbereich gespeicherten Daten wird durch fetchsize bestimmt. Gleichzeitig werden fetchsize-Datensätze an den Client übertragen

Das obige ist der detaillierte Inhalt vonWas soll ich tun, wenn die SQL-Abfrage zu viele Daten enthält und der Speicher überläuft?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
sql
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage