Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix sql syntax for the last article #2

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,7 @@ Elle permet de jouer des requêtes en amont de notre `SELECT` et de stocker le r

C'est pratique pour limiter les jointures et optimiser au maximum les index définis sur les tables.

```sql
WITH
temp_table_1 AS (
SELECT id as table_1_id
Expand Down Expand Up @@ -114,6 +115,7 @@ C'est pratique pour limiter les jointures et optimiser au maximum les index déf
OR EXISTS(SELECT table_1_id FROM temp_table_3 WHERE table_1_id = t.id)
)
ORDER BY t.created_at DESC, t.id ASC LIMIT 20;
```

L'utilisation de la commande `WITH` nous a permis d'avoir de bons résultats. Lors de nos tests sur un replica de nos tables, pour la même requête réécrite, nous passions d'environ 45 secondes à seulement 2 secondes !

Expand All @@ -133,21 +135,26 @@ A l'aide des analyses précédentes et en jouant certaines parties indépendamme

Par exemple la requête ci-dessous, mettait en moyenne moins d'une seconde pour avoir un résultat :

```sql
SELECT id
FROM "table_2"
WHERE name ILIKE '%<value>%';
```

Idem, pour la requête ci-dessous :

```sql
SELECT id
FROM "table_2"
WHERE first_name ILIKE '%<value>%'
OR last_name ILIKE '%<value>%'
OR phone ILIKE '%<value>%'
OR email ILIKE '%<value>%';
```

Par contre, ces deux requêtes ensemble avec une jointure et des conditions `WHERE ... OR ...` comme ci-dessous dedans faisait exploser le temps à plus de 60 secondes.

```sql
SELECT t.*
FROM "table_1" s
WHERE t.workspace = '<workspaceIri>'
Expand Down Expand Up @@ -187,6 +194,7 @@ Par contre, ces deux requêtes ensemble avec une jointure et des conditions `WHE
)
)
ORDER BY t.created_at DESC, t.id ASC LIMIT 20;
```

Du coup, on s'est dit, pourquoi ne pas tout mettre à plat ?

Expand Down