![]() |
![]() |
![]() ![]()
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. |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 87 Pomógł: 12 Dołączył: 31.05.2006 Ostrzeżenie: (0%) ![]() ![]() |
Proponuję skorzystanie z perspektyw .
|
|
|
![]()
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. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 12:48 |