![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 602 Pomógł: 30 Dołączył: 1.08.2007 Skąd: Nowy Sącz Ostrzeżenie: (0%) ![]() ![]() |
Witam, mam zapytanie które oznacza mi co drugi wynik pewną flagą.
Chodzi mi głównie o zapytanie SELECT. Dla 6 000-10 000 rekordów działa spoko. Ale jak spróbuję przeedytować tabelkę 500000 rekordów to juz jest problem Moja tabelka
I w co drugim rekordzi potrzebuję mieć 1 a w co drugim 0 maksymalnie równo rozłożone rekordy. Sortuję po czasie dodania rekordu (czyli ID), Przykłodowo musze równo podzielić maile np z przed dwóch lat. Skrypt jest częściej wykorzystywany. Obecnie nie poradziłem sobie z jego uruchomieniem. Robię to tak, że eksportuję w ekselu usuwam odpowiendie wiersze, a te pozostałe oznaczam flagą i importuje do innej tabelki.
Jak to zoptymalizować jak uruchomić na tabeli pół miliona rekordów nawet konsola się wiesza. Ten post edytował daniel1302 26.01.2015, 18:25:13 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) ![]() ![]() |
Na polu status masz indeks?
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 602 Pomógł: 30 Dołączył: 1.08.2007 Skąd: Nowy Sącz Ostrzeżenie: (0%) ![]() ![]() |
Pola status to poprostu statusy użytkowników. Określają jakie dane chcą otrzymywać. Nie mam indeksów
Ten post edytował daniel1302 27.01.2015, 07:57:29 |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 1 421 Pomógł: 310 Dołączył: 18.04.2012 Ostrzeżenie: (0%) ![]() ![]() |
Jak chcesz szybko, to taki pomysł:
1. utwórz tabelę: ID AutoIncrement, tabID INT, Flag INT 2. przekopiuj do niej wartosci z twojej tabeli: INSERT INTO tabela (tabID) SELECT id FROM twoja_tabela 3. zupdejtuj tę nową tabelę: UPDATE tabela SET flag=(ID % 2) 4. załóż indeks na tabID 5. zupdejtuj swoją tabelę korzystając z tej |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) ![]() ![]() |
@daniel1302 po moim poście sądziłem że dodasz ten indeks i przetestujesz... No cóż. Przeliczyłem się.
Załóż tam indeks zwykły i przetestuj. |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 602 Pomógł: 30 Dołączył: 1.08.2007 Skąd: Nowy Sącz Ostrzeżenie: (0%) ![]() ![]() |
Przetestowałem ale jeszcze nie zdążyłem odpowiedzieć bo jestem w pracy. Dzięki działa 5 min ale jest to już akceptowalny dla mnie wynik. + Dla ciebie oczywiście
Poczytałem o indeksach, jeśli masz jakieś propozycje ciekawych artykułów to proszę o podesłanie nt. MySQL. Podobają mi się bazy danych i planuję nauczyć się ORACLE. mmmmm myślałem o twoim pomyśle, ale chciałem uniknąć tworzenia nowej tabelki bo przy rozmiarze tabeli 400 mb to troche zajmie. A zależy mi na szybkości. Nie moge edytować, ale jak komuś to się przyda to dzisiaj wpadłem na optymalniejszy sposób wykonywnaia tego zapytania be widoku częściowego
Na 500 tyś wykonuje się 2 sec Ten post edytował daniel1302 27.01.2015, 12:27:55 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 08:27 |