Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Wolny INSERT do tymczasowej tabeli typu MEMORY, 12 tysięcy rekordów ładowanych w czasie aż 5 sekund!
ego
post
Post #1





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 5.05.2008

Ostrzeżenie: (0%)
-----


Witam,

Mam problem optymalizacyjny.

1. Wywołuję SELECT na dużej tabeli (hurtownia danych, 10mln rekordów).

2. Zapytaniem tym pobieram 10 kolumn (wszystkie kolumny SMALLINT), zostaje mi zwrócone ok. 12 tysięcy wyników w czasie 0.4 sekundy.

3. Zwrócone dane odrazu ładuję do tymczasowej tabeli MEMORY (INSERT INTO ... SELECT FROM...), co okazuje się trwać aż 5 sekund! Załadowane dane ważą zaledwie 1.6MB. Dodam, że tabela tymczasowa nie ma żadnych indeksów.

Czy naprawdę INSERT tych 12 tysięcy rekordów do tabeli typu MEMORY musi trwać aż 5 sekund? Wszystko odpalane na szybkim serwerze dedykowanym (kilkanaście corów, 24GB RAM...)
Jak można poradzić sobie z takim problemem? Idea ładowania wyniku SELECTa do tabeli tymczasowej jest taka, aby móc wyniki dalej obrabiać dodatkowymi szybkimi zapytaniami.

Z góry dzięki za sugestie.
Go to the top of the page
+Quote Post
trafas
post
Post #2





Grupa: Zarejestrowani
Postów: 87
Pomógł: 12
Dołączył: 31.05.2006

Ostrzeżenie: (0%)
-----


Proponuję skorzystanie z perspektyw .
Go to the top of the page
+Quote Post
wookieb
post
Post #3





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Co to za zapytanie i co chcesz dokładnie zrobić?
Tabela tymczasowa nie posiada indeksów (nawet nie może) więc zapytania na niej wykonywane nie muszą być szybsze od zapytań wykonywanych na dużej tabeli z dobrymi indeksami.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.08.2025 - 16:55