ďťż
 
[SQL] Wyszukiwanie, predkosc ďťż
 
[SQL] Wyszukiwanie, predkosc
Zobacz wiadomości
 
Cytat
A gdyby tak się wedrzeć na umysłów górę, / Gdyby stanąć na ludzkich myśli piramidzie, / I przebić czołem przesądów chmurę, / I być najwyższą myślą wcieloną. . . Juliusz Słowacki, Kordian
Indeks BCB i MySQL subiekt gt fototapeta
 
  Witamy

[SQL] Wyszukiwanie, predkosc



Waldemar - 13-11-2006 00:45
[SQL] Wyszukiwanie, predkosc
  Witam,

Musze zrobic wyszukiwanie po dosc sporej tabeli obiektow. Kazdy obiekt
ma nazwe (czasem przydluga, tak do 40 slow) oraz slowa kluczowe.

Wyszukiwanie bedzie polegalo na tym, ze user wpisuje fraze ktorej slowa
beda poszukiwane zarowono wsrod nazwy jak i slow kluczowych.

Wymyslilem sobie, ze zrobie to (w duzym uproszczeniu) tak:

tabela obiekty (
id integer primary index,
nazwa varchar,
...
)

tabela slowaKluczowe (
idS integer,
slowo varchar primary index
)

tabela slowaDoObiekty (
idS integer primary index,
id integer,
)

Strace na pamieci (redundancja danych - wszystkie nazwy bede musial
przekonwertowac do slow kluczowych) ale powinienem zyskac na szybkosci.

I teraz prosze o rady:

Po pierwsze, czy warto w ogole cos takiego robic ? Spodziewam sie, ze
bede w bazie mial ok. 40000 obiektow i jakies 5000-10000 slow
kluczowych. O ile szybsze moze byc cos takiego od uzycia zwyklego
operatora LIKE ? (Googlowalem, nic to nie dalo :( ).

Po drugie, w czasie tworzenia indexu musze wybrac 'metode dostepu'.
Uzywam Postgresa, do wyboru mam rtree, btree(default), hash i gist.
Ktora z tych struktur najlepiej sie nada do indexowania tabeli
slowaKluczowe ? A ktora do slowaDoObiekty ?

I po trzecie czy mozecie polecic jakas dobra ksiazke/artykul o
optymalizacji zapytan SQL ? Najchetniej do Postgresa, bo wiem ze kazda
baza dziala w inny sposob, ale moze byc tez jakies ogolne opracowanie,
byleby z przykladami.

Dzieki za wszelka pomoc i pozdrawiam,
Waldemar





Grzegorz Danowski - 13-11-2006 00:45

  Użytkownik "Waldemar" <nie@mam.maila.com> napisał w wiadomości
news:ehgcvp$917$1@news.task.gda.pl...
> Witam,
>
> Musze zrobic wyszukiwanie po dosc sporej tabeli obiektow. Kazdy obiekt
> ma nazwe (czasem przydluga, tak do 40 slow) oraz slowa kluczowe.
>
> Wyszukiwanie bedzie polegalo na tym, ze user wpisuje fraze ktorej slowa
> beda poszukiwane zarowono wsrod nazwy jak i slow kluczowych.
>
> Wymyslilem sobie, ze zrobie to (w duzym uproszczeniu) tak:
>
> tabela obiekty (
> id integer primary index,
> nazwa varchar,
> ...
> )
>
> tabela slowaKluczowe (
> idS integer,
> slowo varchar primary index
> )
>
> tabela slowaDoObiekty (
> idS integer primary index,
> id integer,
> )
>
> Strace na pamieci (redundancja danych - wszystkie nazwy bede musial
> przekonwertowac do slow kluczowych) ale powinienem zyskac na szybkosci.

Nie wiem czy stracisz na pamięci - każde słowo będzie teraz zapisane raz, a
powtarzać się będzie tylko 2 * integer, czyli 8 bajtów. Indeksy też pewnie
zajmą mniej miejsca.

>
> I teraz prosze o rady:
>
>
> Po pierwsze, czy warto w ogole cos takiego robic ? Spodziewam sie, ze
> bede w bazie mial ok. 40000 obiektow i jakies 5000-10000 slow

To raczej nie dużo, więc zysk na jednym zapytaniu nie będzie duży (w
sekundach), lecz przy dużej liczbie zapytań w określonym przedziale czasu,
to zyskasz IMHO dużo.

> kluczowych. O ile szybsze moze byc cos takiego od uzycia zwyklego
> operatora LIKE ? (Googlowalem, nic to nie dalo :( ).

A najlepiej potestuj na jakimś prostym przykładzie :-).
Pozdrawiam
Grzegorz




Misiekd - 13-11-2006 00:45

  Dnia Sun, 22 Oct 2006 20:24:01 +0200, Waldemar napisał(a):

> Witam,
>
> Musze zrobic wyszukiwanie po dosc sporej tabeli obiektow. Kazdy obiekt
> ma nazwe (czasem przydluga, tak do 40 slow) oraz slowa kluczowe.
>
> Wyszukiwanie bedzie polegalo na tym, ze user wpisuje fraze ktorej slowa
> beda poszukiwane zarowono wsrod nazwy jak i slow kluczowych.
>
> Wymyslilem sobie, ze zrobie to (w duzym uproszczeniu) tak:
>
> tabela obiekty (
> id integer primary index,
> nazwa varchar,
> ...
> )
>
> tabela slowaKluczowe (
> idS integer,
> slowo varchar primary index
> )
>
> tabela slowaDoObiekty (
> idS integer primary index,
> id integer,
> )
>
> Strace na pamieci (redundancja danych - wszystkie nazwy bede musial
> przekonwertowac do slow kluczowych) ale powinienem zyskac na szybkosci.
>
> I teraz prosze o rady:
>
>
> Po pierwsze, czy warto w ogole cos takiego robic ? Spodziewam sie, ze
> bede w bazie mial ok. 40000 obiektow i jakies 5000-10000 slow
> kluczowych. O ile szybsze moze byc cos takiego od uzycia zwyklego
> operatora LIKE ? (Googlowalem, nic to nie dalo :( ).
>
> Po drugie, w czasie tworzenia indexu musze wybrac 'metode dostepu'.
> Uzywam Postgresa, do wyboru mam rtree, btree(default), hash i gist.
> Ktora z tych struktur najlepiej sie nada do indexowania tabeli
> slowaKluczowe ? A ktora do slowaDoObiekty ?
>
> I po trzecie czy mozecie polecic jakas dobra ksiazke/artykul o
> optymalizacji zapytan SQL ? Najchetniej do Postgresa, bo wiem ze kazda
> baza dziala w inny sposob, ale moze byc tez jakies ogolne opracowanie,
> byleby z przykladami.
>
> Dzieki za wszelka pomoc i pozdrawiam,
> Waldemar

nigdzie nie napisałeś co to za baza będzie ale może co do wyszukiwania w
nazwach to FulTextSearch da radę

--
Pozdrawiam Misiekd
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • effulla.pev.pl
  • comp
    jak to =?ISO-8859-2?Q?zrobi=E6=2E=2E=2E=3F_TSQL_sql_server?==?ISO-8859-2?Q?_?= Jak =?windows-1250?Q?pobra=E6_szacowan=B9_wielko=9C=E6_zbiory_wy nikowego_w_MS?==?windows-1250?Q?_SQL_2005=3F?= =?iso-8859-2?Q?=5BMS_SQL=5D_Czy_mo=BFna_wywo=B3a=E6_funkcje_t ylko_raz_dla?==?iso-8859-2?Q?_ca=B3ego_zbioru_=BCr=F3d=B3owego=3F?= [MSSQL] =?ISO-8859-2?Q?zgodno=B6ci_z_licencjami_Microsoft_?==?ISO-8859-2?Q?SQL_Server?= =?ISO-8859-2?Q?k=B3opot_z_uruchomieniem_MY_SQL_dla_C?==?ISO-8859-2?Q?MS_i_CRM_na_Fedora_Core_3?= Oracle PL/SQL Wstawianie =?ISO-8859-2?Q?wynik=F3w_kolekcji_d?==?ISO-8859-2?Q?o_tabeli?= [MSSQL] ACCESS - SQL =?ISO-8859-2?Q?B=B3ad_w_konwersji_lic?==?ISO-8859-2?Q?zb?= =?iso-8859-2?Q?=5Bmssql=5D_Zapytania_rekurencyjne__-_czy_sk=B3adnia_sql?==?iso-8859-2?Q?_co=B6_takiego_przewiduje_=3F?= [Oracle PL/SQL] Cursor i zapis =?ISO-8859-2?Q?rekord=F3w_do_?==?ISO-8859-2?Q?kolejnych_plik=F3w?= =?iso-8859-2?Q?=5BMySQL=5D_Co_minimalnie_potrzebne_zeby_mie=E 6_klienta_My?==?iso-8859-2?Q?SQL_na_Linuxie=3F?=
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • quentinho.opx.pl
  • Cytat

    Decede mihi sole - nie zasłaniaj mi słonca.
    Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści
    Hoc fac - tak czyń.
    A tergo - od tyłu; z tyłu.
    I czarne włosy posiwieją. Safona

    Valid HTML 4.01 Transitional

    Free website template provided by freeweblooks.com