Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: duplikaty w bazie - zapobieganie powstawaniu
Forum PHP.pl > Forum > PHP
Dagger
Witam!
Mam skrypt w ktorym codziennie jest dopisywanych prawie 4tys. wpisow... zawsze gdy jest uruchamiany skrypt musze sprawdzic czy dany link juz nie istnieje w bazie ...
robie to tak:
  1. <?php
  2.  $ile = mysql_num_rows(mysql_query (&#092;"SELECT id FROM linki WHERE adres='\".$adres.\"';\"));
  3.  if($ile==0){
  4.  $zapytanie = &#092;"INSERT INTO linki (adres,tekst,strona,data) VALUES ('\".$adres.\"','\".$tekst.\"','coolpage','\".$x_data.\"')\";
  5.  $wykonaj = mysql_query($zapytanie, $p);
  6.  }
  7. ?>

ale przy coraz wiekszej bazie takie sprawdzanie robi sie coraz bardziej maloefektywne i wykonywanie skryptu czesto nie miesci sie w dozwolonym czasie na serwerze.
Macie pomysly jak mozna to zrobic lepiej?
Z gory dzieki za pomoc.
shima
Cytat(Dagger @ 2005-02-17 12:31:59)
Witam!
Mam skrypt w ktorym codziennie jest dopisywanych prawie 4tys. wpisow... zawsze gdy jest uruchamiany skrypt musze sprawdzic czy dany link juz nie istnieje w bazie ...
robie to tak:
  1. <?php
  2.  $ile = mysql_num_rows(mysql_query (&#092;"SELECT id FROM linki WHERE adres='\".$adres.\"';\"));
  3.  if($ile==0){
  4.  $zapytanie = &#092;"INSERT INTO linki (adres,tekst,strona,data) VALUES ('\".$adres.\"','\".$tekst.\"','coolpage','\".$x_data.\"')\";
  5.  $wykonaj = mysql_query($zapytanie, $p);
  6.  }
  7. ?>

ale przy coraz wiekszej bazie takie sprawdzanie robi sie coraz bardziej maloefektywne i wykonywanie skryptu czesto nie miesci sie w dozwolonym czasie na serwerze.
Macie pomysly jak mozna to zrobic lepiej?
Z gory dzieki za pomoc.

Zrób to pole UNIQUE
Dagger
czyli jesli pole adres ustawie jako UNIQUE to gdy bede wstawial wpis do bazy za pomoca INSERT to taki wpis zostanie pominiety? czy zastapiony?
dr_bonzo
Nie pozwoli ci go dodac -- zwroci FALSE, ale pamietaj zeby pozbyc sie powtorek zanim bedziesz dodawal UNIQUE.
Kocurro
A jeśli chcesz robić coś takiego:

jeśli masz rekord to go uaktualnić a jeśli nie masz to wstawic to wtedy używaj: REPLACE

poza tym polecam przeczytanie dużo informacji na temat kluczy itp. gdyż w większych aplikacjach nie używanie kluczy powoduje znaczny wzrost czasu wykonywania zapytań.
Dagger
dzieki wszystkim

chodzilo mi o to aby skrypt efektywniej dzialal i to pole UNIQUE powinno pomoc.
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.