Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 7 Pomógł: 0 Dołączył: 16.08.2022 Ostrzeżenie: (0%)
|
Cześć,
mam tabelę którą wypełniłem seederem i łącznie mam w niej około 500k rekordów. W Laravel generuję query builderem coś takiego:
i generuje to takie zapytanie:
Problem z tym wszystkim jest takie, że dodanie order by zwiększa czas wykonywania zapytania z 1,5ms na ponad 500ms co jest kolosalną różnicą. Powyższe zapytanie jest używane do livesearch. Co tutaj jest nie tak, że dodanie sortowanie aż tak mocno zwalnia zapytanie? |
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Moderatorzy Postów: 36 561 Pomógł: 6315 Dołączył: 27.12.2004 |
1) jak juz mowiono, jak nie okresliles search to nie produkuj WHERE ktore po search szukaja.
2) Jak nie musisz joinowac czegos to nei joinuj - patrz punk wyzej 3) Zamien INNER JOIN na LEFT JOIN. Wbrew pozorom to ma znaczenie. Jak LEFT JOIN nie pomoze to sprobuj samo JOIN Oczywiscie testuj na samym order by bez warunkow. I jesli to nie pomoze to wymus index ktory ma zostac uzyty, czyli w twoim wypadku wymus index po polu po ktorym sortujesz. DOdatkowo zalozyleles klucze obce na laczane tabele? Bo to wszystko wyglada jakby bylo robione z lapanki |
|
|
|
Intenso Dodanie orderBy znacząco zwalnia zapytanie 1.05.2023, 21:11:04
Tomplus Może problem leży po stronie kluczy (ich braku) w ... 1.05.2023, 23:09:06
Intenso Ustawiłem indeksy na wyszukiwanych kolumnach
ALTE... 2.05.2023, 07:15:36
trueblue A w tabeli orders są założone klucze? 2.05.2023, 07:56:03
Intenso Tak, orders posiada indeksy na customer_id, shippi... 2.05.2023, 09:09:28
trueblue Wykonaj EXPLAIN SELECT... bezpośrednio na bazie. R... 2.05.2023, 09:16:16
Intenso Tak wygląda z orderBy
a tak bez:
Szczerze m... 2.05.2023, 09:40:34
trueblue Spróbuj sprawdzić zapytanie bez warunków OR (z ORD... 2.05.2023, 09:58:22
Intenso Usunięcie wszystkich warunków zmniejsza czas zapyt... 2.05.2023, 18:46:52
trueblue Cytat(Intenso @ 2.05.2023, 19:46:52 )... 3.05.2023, 12:46:36
viking Albo jeśli to livesearch zastosuj typowe do tego r... 3.05.2023, 17:05:17 ![]() ![]() |
|
Aktualny czas: 14.12.2025 - 17:52 |