login  Naam:   Wachtwoord: 
Registreer je!
 Forum

SQL Or statement performance LAG

Offline erm - 09/11/2010 16:35 (laatste wijziging 09/11/2010 16:38)
Avatar van ermLid Hoi Allen,

Ik ben een adresboek aan het maken dat moet zoeken op de voornaam en achternaam. Hiervoor maak ik een OR statement in SQL. Dit doe ik als er niets in de voornaam gevonden is met de waarde dan kan hij in de achternaam kijken.
Maar dit duurt veelste lang als hij in beide tabellen moet kijken, de database is erg groot en heeft ong 200. 000 records.
Weet iemand hoe ik sneller dit kan opvragen in SQL?

Hieronder mijn SQL statement:
  1. SELECT r.VendId,r.Name,r.JobDescription,r.FirstName,r.Initials,r.OfficePhone,r.PrivCountryCode,
  2. r.MobilePhone,r.PrivAddr,r.Email ,a.Name,a.Addr,a.PostCode,a.State,a.City
  3. FROM T_VendorRelation r,t_vendoraddress a
  4. WHERE r.FirstName LIKE '%$voornaam%'
  5. OR LastName LIKE $voornaam
  6. AND a.VendId = r.VendId";


alvast bedankt!

5 antwoorden

Gesponsorde links
Offline Berten - 09/11/2010 16:37
Avatar van Berten PHP beginner 1. 200000 records is niet erg groot, het is zelfs gewoon niet groot.
2. kijk even naar http://dev.mysq...dexes.html , daar geven ze wat uitleg over indexen, hiermee zou je een heel pak verder moeten komen.
Offline Joel - 09/11/2010 16:41
Avatar van Joel Eigenaar En maak gebruik van een INNER JOIN.

  1. SELECT * FROM T_VendorRelation r
  2. INNER JOIN t_vendoraddress a
  3. ON a.VendId = r.VendId
  4. WHERE r.FirstName LIKE '%$voornaam%'
  5. OR LastName LIKE $voornaam AND a.VendId = r.VendId

Bedankt door: erm
Offline Berten - 09/11/2010 16:44
Avatar van Berten PHP beginner @Joel

Volgens mij is een join ook de betere oplossing. Volgens http://www.mysq...-and-where/ zijn de execution plans van beide opties echter hetzelfde in mysql en is er dus geen performance winst
Offline erm - 10/11/2010 09:50 (laatste wijziging 10/11/2010 14:26)
Avatar van erm Lid @Joel Dankjewel, De inner join werkt sneller?
Ik ben heeel nieuwschierig hoe het komt dat het sneller is ???
want hij doet toch gewoon hetzelfde als mijn eerste query?

dit is de juiste statement
  1. $statement ="SELECT r.VendId,r.Name,r.JobDescription,r.FirstName,r.Initials,r.OfficePhone,r.PrivCountryCode,r.MobilePhone,r.PrivAddr,r.Email ,a.Name,a.Addr,a.PostCode,a.State,a.City
  2. FROM T_VendorRelation r INNER JOIN t_vendoraddress a ON a.VendId = r.VendId WHERE r.FirstName LIKE '%$voornaam%' OR r.Name LIKE '%$voornaam%' AND a.VendId = r.VendId";


Offline jaronneke - 10/11/2010 15:05
Avatar van jaronneke MySQL interesse
erm schreef:
@Joel Dankjewel, De inner join werkt sneller?
Ik ben heeel nieuwschierig hoe het komt dat het sneller is ???
want hij doet toch gewoon hetzelfde als mijn eerste query?

dit is de juiste statement [..code..]


met een WHERE filter je de data pas als hij opgehaald is ... bij een inner join direct. (geen overbodige data).
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.206s