Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wolny INSERT do tymczasowej tabeli typu MEMORY
Forum PHP.pl > Forum > Bazy danych > MySQL
ego
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.
trafas
Proponuję skorzystanie z perspektyw .
wookieb
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.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.