![]() |
![]() |
--Majestiq-- |
![]()
Post
#1
|
Goście ![]() |
Mam tabele o nazwie TAB i strukturze:
id int (11) tytul varchar(50) dlugosc varchar(200) link varchar(200) data date czas varchar(200) rozmiar varchar(200) licznik int(10) Pytanie - jakim poleceniem mogę usunąć wszystkie wiersze (poza 1) o tym samym tytule z tej tabeli ? Szukałem ale rozwiązania były bardziej skomplikowane niż by się mogło wydawać i nie udało mi się do tej pory uzyskać zamierzonego efektu :/ Czy to ze większość pól jest varchar(200) ma wpływ na szybkość zapytań SELECT ? Mam serwer na nazwa.pl i co chwila blokuje mi bazę z powodu przekroczenia czasu zapytań na godzinę czy jakoś tak (limit 600s na godzinę) a tak naprawdę wszystkie zapytania to selecty na tej jednej tabeli i dziwie się że tak szybko limit wykorzystuje - co by było o zgrozo gdybym miał wiele tabel i na nich wykonywał operacje, chyba w ogóle od razu by mi baza padła. W bazie (tabela tab) jest około 100 000 rekordów, ale przecież to nie dużo jak na bazę danych. Proszę o pomoc. |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Moderatorzy Postów: 4 465 Pomógł: 137 Dołączył: 26.03.2004 Skąd: Gorzów Wlkp. ![]() |
Ja mam to samo niestety przy jednym sklepie (skończy się chyba na VPS). Tu nie wielkość tabeli ma znaczenie, a to, jak dużo danych pobierasz jednokrotnie. Może to nie jest potrzebne? Limit jest na czas operacji na bazie danych, więc taki zabieg pomoże. Chyba, że masz dużo odwołań, wtedy nic nie zrobisz. Niestety, nazwa.pl pod tym względem sobie kpi z klientów - pewnie liczą na to, że klient zapłaci z dedykowaną bazę danych i kupi ich VPS ;/
Co do usuwania: Wyciągnij rekord i rekord o nazwie takiej samej jak ten pierwszy (w podzapytaniu: tabelebis.tytul=tabela.tytul). Jeśli wynik da 2 i więcej rekordów, skasuj je w następnym zapytaniu (już przecież masz ich ID). Pozdrawiam. -------------------- To think for yourself you must question authority and
learn how to put yourself in a state of vulnerable, open-mindedness; chaotic, confused, vulnerability, to inform yourself. Think for yourself. Question authority. |
|
|
-Gość- |
![]()
Post
#3
|
Goście ![]() |
Ja mam to samo niestety przy jednym sklepie (skończy się chyba na VPS). Tu nie wielkość tabeli ma znaczenie, a to, jak dużo danych pobierasz jednokrotnie. Może to nie jest potrzebne? Limit jest na czas operacji na bazie danych, więc taki zabieg pomoże. Tzn. jaki :-) To usunięcie duplikatów ? Cytat Co do usuwania: Wyciągnij rekord i rekord o nazwie takiej samej jak ten pierwszy (w podzapytaniu: tabelebis.tytul=tabela.tytul). Jeśli wynik da 2 i więcej rekordów, skasuj je w następnym zapytaniu (już przecież masz ich ID). A mógłbyś mi napisać cały kod dla tej tabeli. Niestety jestem początkującym SQLowcem i mam duże problemy z troszkę bardziej skomplikowanymi rzeczami :| A to SELECT DISTINCT tytul from TAB tak jak kolega na początku radził nie pomoże ![]() Co do mojej bazy to czasem jednocześnie kilkadziesiąt osób ja odpytuje (select) no i rozumiem z tego co mówicie, że nazwa.pl nie nadaje się zupełnie dla mnie ?! No i sprawa tych indeksów o których mówicie? Mogą one 'coś' pomóc (jak mówię w sumie tylko 1 tabela jest wykorzystywana przy większości zapytań) ? Ciężko je założyć ? No i ostatnia sprawa - jakby komuś chciało się luknąć na tego posta: http://forum.php.pl/PHPMYSQLProblem_z_wysz...rka_t94012.html Może mam tam w którymś miejscu coś strasznie niezoptymalizowanego i można by to kilkukrotnie przyśpieszyć. Szczególnie jeśli chodzi o plik szukarka.php Najczęściej jest chyba wykonywane zapytanie:
Może można tu coś zmienić ![]() |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 15.08.2025 - 01:12 |