Voor bepaalde overzichten haal ik een bepaald aantal records uit een MySQL-tabel. Ik gebruik hiervoor de 'LIMIT n, m'-constructie waarbij de n staat voor de beginpositie en m voor het aantal te selecteren records. Naast de records die ik selecteer wil ik ook het totaal aantal records dat aan de WHERE-conditie voldoet op het scherm tonen.
Wat is hiervoor qua performance-overwegingen de beste oplossing van deze twee (of is er een betere?):
Mogelijkheid 1: In twee stappen selecten uit de database:
Mogelijkheid 2: In één keer selecten met een subquery:
Wat is hiervoor qua performance-overwegingen de beste oplossing van deze twee (of is er een betere?):
Mogelijkheid 1: In twee stappen selecten uit de database:
MySQL:
1
2
3
4
5
6
7
8
9
| 'Eerst het aantal records met behulp van COUNT(primary_key) 'en deze opslaan in een variabele SELECT COUNT(ArtikelID) FROM artikelen WHERE BedrijfID = 1; |
MySQL:
1
2
3
4
5
6
7
8
9
10
11
12
13
| 'Vervolgens de records die nodig zijn: 'vanaf het eerste record (0) 10 records selecten (10) SELECT ArtikelID, Omschrijving, Prijs FROM artikelen WHERE BedrijfID = 1 LIMIT 0, 10; |
Mogelijkheid 2: In één keer selecten met een subquery:
MySQL:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
| 'records selecteren + subquery met COUNT(primary_key) SELECT ( SELECT COUNT(ArtikelID) FROM artikelen WHERE BedrijfID = 1 ), ArtikelID, Omschrijving, Prijs FROM artikelen WHERE BedrijfID = 1 LIMIT 0, 10; |