Toon posts:

[SQL2k] Trage uitvoer van query *

Pagina: 1
Acties:

Verwijderd

Topicstarter
Goedendag!

ik heb al even lopen zoeken, maar kon niks conreets vinden.

Ik heb een windows 2003 server met daarop een sql server 2000. Nu voer ik vanaf een client een query uit. Het verkrijgen van het resultaat duurt veel te lang.

Iemand enig id hoe het kan dat het verkrijgen van de informatie zo lang duurt?

Ik programmeer overigens in java hieronder mijn code van mijn databaseConnectie klasse:

code:
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
public class DatabaseConnection
{
    private Connection myConn;
    private ResultSet myResultSet;
    private int connectionOpen = 0;
    
    public void OpenConnection()
    {
        if (connectionOpen ==0)
        {
            try 
            {
                Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
                myConn=DriverManager.getConnection("jdbc:microsoft:sqlserver:);
                connectionOpen =1;
            }
            catch( Exception e )
            {
                
            }
        }
    }
    
    public ResultSet ExecQuery(String strSQL)
    {
        OpenConnection();
        try 
        {
            Statement stmt = myConn.createStatement();
            myResultSet = stmt.executeQuery( strSQL );
        }
        catch( Exception e )
        {
            System.out.println(e);
        }
        return myResultSet;
    }
    
    public void ExecuteQuery(String strSQL)
    {
        OpenConnection();
        try 
        {
            Statement stmt = myConn.createStatement();
            stmt.executeQuery( strSQL );
        }
        catch( Exception e )
        {
        }
    }
    
    public void CloseConnection(){
        try 
        {
            myConn.close();
            connectionOpen = 0;
        }
        catch( Exception e )
        {
            
        }
    }
}

[ Voor 3% gewijzigd door whoami op 03-12-2003 09:18 ]


  • whoami
  • Registratie: December 2000
  • Nu online
De code die je gepost hebt, is hoogstwaarschijnlijk niet relevant.

Heb je goede indexen op je tabellen gelegd?
Heb je je query al eens in Query Analyzer uitgevoerd, en heb je daar al eens het execution plan van die query bekeken?

Ook slim trouwens om IP adressen, usernames en passwords te posten. Ik heb het maar ff geëdit. Ipv die Java code te posten, kan je misschien beter de SQL query posten trouwens.

[ Voor 30% gewijzigd door whoami op 03-12-2003 09:18 ]

https://fgheysels.github.io/


Verwijderd

Topicstarter
Ik heb deze query ook uitgevoerd in de SQL analyzer in server2000. daar heb ik de queryresult binnen no time.

query:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
if(!anaamStr.equals(""))
        {
            
            queryAnaam = "SELECT * FROM agw WHERE (WE_ANAAM = '"+anaamStr+"')";
            System.out.println(queryAnaam);
            resultSet = dbConn.ExecQuery(queryAnaam);
            
            try
            {
                while(resultSet.next())
                {
                    
                    voorNaam = resultSet.getString("WE_ROEPNM");
                    System.out.println(voorNaam);
                }
            }
            catch(Exception e)
            {
                System.out.println("Fout bij het uitvoeren van query: "+e);
            }
        }


de query is echt niet van die aard dat hij ongelooflijk lang moet denken lijkt mij.

usernames en passwords lijkt mij in dit geval ook niet relevant

[ Voor 11% gewijzigd door Verwijderd op 03-12-2003 09:32 ]


  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 15:26

Janoz

Moderator Devschuur®

!litemod

Hoe snel wordt het resultaat opgeleverd waneer je de client op de server zelf uitvoert? Misschien wordt de vertraging wel veroorzaakt door de netwerkverbinding.

offtopic:
Nog een paar opmerkingen over je code:
1 Ik zie nergens verbindingen gesloten worden
2 Jouw exception afhandeling is niet goed. Bij een sqlexception krijg je dat te zien door een exception op de stdout en een nullpointer exception
3 Geen gebruik van parameters waardoor sql-insertion kan worden toegepast.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Verwijderd

Topicstarter
In de query analyzer word direct de gegevens getoond, enkele ms.

over mijn code:

connectie word niet gesloten idd, er word bij elke aanroep gekeken in de database klasse of er al een connectie is.

aan mijn netwerkverbinding kan het ook niet echt liggen want ik heb verder wel een snelle verbinding met de server, kopieren van files etc gaat met een snelheid van 10MB/sec dus lijkt mij in orde

  • Remco
  • Registratie: Januari 2001
  • Laatst online: 15:56
gooi die check of je verbinding al open is er tijdelijk uit.
Verbindingen opzetten, closen en checken duren best wel lang.

The best thing about UDP jokes is that I don't care if you get them or not.


Verwijderd

Topicstarter
na wat puzzel werk ben ik erachter dat het uitvoeren van de query meteen gebeurd, en dat het resultaat ook meteen terugegeven word.

hieruit maak ik op dat de verbinding goed is, maar dat er iets niet goed gaat bij het maken van de database verbinding.........

is het mogelijk dat de JDBC driver die ik implementeer in java niet goed is?

[ Voor 14% gewijzigd door Verwijderd op 03-12-2003 10:14 ]


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 18:08

gorgi_19

Kruimeltjes zijn weer op :9

Verberg dan, zeker met debuggen, niet alle exceptions..... :P

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • Remco
  • Registratie: Januari 2001
  • Laatst online: 15:56
Verwijderd schreef op 03 december 2003 @ 10:11:
na wat puzzel werk ben ik erachter dat het uitvoeren van de query meteen gebeurd, en dat het resultaat ook meteen terugegeven word.

hieruit maak ik op dat de verbinding goed is, maar dat er iets niet goed gaat bij het maken van de database verbinding.........

is het mogelijk dat de JDBC driver die ik implementeer in java niet goed is?
Je bent niet de enige:
http://www.google.nl/sear...=UTF-8&oe=UTF-8&hl=nl&lr=

The best thing about UDP jokes is that I don't care if you get them or not.


  • whoami
  • Registratie: December 2000
  • Nu online
Verwijderd schreef op 03 december 2003 @ 09:55:
connectie word niet gesloten idd, er word bij elke aanroep gekeken in de database klasse of er al een connectie is.
IMHO is het toch beter dat je je connectie sluit van zodra je die niet meer nodig hebt. Zeker als er meerdere gebruikers tegelijk gebruik maken van je applicatie kan dat nogal eens schelen.

https://fgheysels.github.io/


Verwijderd

Topicstarter
ben er nu wel achter dat het aan de driver ligt, maar echt oplossingen vinden doe ik niet.

is er iemand die een andere driver heeft?
Pagina: 1