Diskuze: Chyba pri vybere z DB
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Člen
Zobrazeno 21 zpráv z 21.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Jak se připojuješ do db? Jaký SQL dotaz používáš pro výběr?
Pripajam sa takto:
SqlConnection cn;
cn = new SqlConnection(@"Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\Database.mdf;Integrated Security=True;Integrated Security=True");
A data vyberam takto:
cn.Open();
DataTable dt = new DataTable();
SqlDataAdapter SDA = new SqlDataAdapter("SELECT p1, p2 FROM tabulka WHERE p1 LIKE '%" + search + "%'", cn);
SDA.Fill(dt);
Kde search je premenna a tam je nejaky textovz retazec.
Doplnil som aj do connection stringu Timeout rovne 0 ale nic.
Dotaz evidentně trvá déle, než by bylo vhodné... Když dotaz trvá déle než pár sekund, je obvykle něco špatně. Buď je špatně optimalizovaná databáze, nebo je špatně položený dotaz...
Nedá sa spraviť to že aj keď bude dotaz trvať dlho tak nevyhodí tuto výnimku ? No vyhľadávanie v DB trvá aj niekoľko minút niekedy kedže hľadám nejaký string vo vetách ktoré sú uložené v DB
Nejsem si úplně jistý, ale myslím si, že ten timeout je "natvrdo" nastaven přímo v SQL...
Fuuu tak to je teraz problém... Neviem ako to teraz riešiť kedže je tam veľa dat a prehľadáva to strašne dlho niekedy
No to mam vytvorenu sercvice oriented database a neviem ako sa to tam da urobit ale rozmyslal som spravit to indexovanie ale ci by to brutalne zrychlilo vyhladavanie to neviem.... mam tam totiz v jednom stlpci ulozeny string ktory obsahuje aj niekolko viet a hladam v nom slovicko alebo slovne spojenie pomocou LIKE %hladany_vyraz% takze asi to trva tak dlho
Zrychlit by to mělo, viz:
http://cs.wikipedia.org/…b%C3%A1ze%29
Tohle by ti také mělo pomoc:
http://www.fuzzy.cz/…ziti-indexu/
Ale upřímně řečeno, myslím, že tvůj dotaz je z principu pomalý. Ještě mne napadlo, že by sis vytvořil uloženou proceduru.
Prave si to citam co si sem pridal a pomohlo by mi to indexovanie ale neviem ako spravit u mna vsade na nete kde vidim tutorialy tak su len na databazy kde sa pouziva microsoft management studio ale ako to spravit vo visual studiu to neviem
http://www.microsoft.com/…details.aspx?… tu si to stahni zdarma, jinak na nastavení indexace je i SQL příkaz, který můžeš použít i ve visual studiu
CREATE INDEX index_name
ON table_name (column_name)
No management studio mam stiahnute aj nainstalvoane ale na zaciatku ma pyta sa pripojit k servru a neviem co tam napisat .... a tam by som v podstate nastavil tie indexy tak ? .... a ten prikaz co si mi dal tak som ho tam pisal do visual studia ale pise mi ze je tam syntax error a pisal som to tam kde vytvaram tabulku. Konretne za primarny kluc som to pisal ako je na obrazku.
Název serveru bude pravděpodobně
NAZEVPC\SQLEXPRESS
Protože máš db jako localDb, tak se k ní přes managment studio přihlásíš cca nějak takhle: http://gwb.blob.core.windows.net/…DbSSMS_4.png
Ohledně toho tvoření indexu, pokud to nastavuješ rovnou v příkazu create, nemělo by tam být myslím jméno tabulky, tímpádem jenom INDEX (column_name), akorát si nejsem jistý jestli není potřeba tam i vložit typ indexu, třeba btree
Takze si tam otvorit tu moju DB nastavit indexy .... ono sa zmeni asi aj dotaz pre select tym padom nie ?
Ja sa sice dostanem do management studia aj si tam najdem DB ale nemozem s nou robit... najlepsie by bolo aby som tie indexy nastavil rovno vo visual studiu ale zatial s tym vobec neviem pohnut
Ono v podstate mam v DB ulozene nazvy diel a k tomu su nejake popisy a tie su dlhe aj na niekolko riadkov co znamena ze ked vyhladavam podla "...LIKE popis %string%" tak to trva strasne dlho.... no ono je asi blbost vyhladavat podla popisu lepsie by bolo asi podla diela ... pretoze nazov je kratky kazdeho diela a ten popis mozem kompresovat takze bude mensi ... ale zasa nebudem moct najst napriklad vsetky diela co sa tykaju programovania pretoze ak to neni v nazve iba v popise
S tím sql studiem ti moc neporadím, ale pokud chceš přidat čistě index tak ho zkus zvlášt jako příkaz ve visualku spustit, nedávat to do create skriptu.
Jinak mě napadla věc, není lepší si tímpádem udělat zvlášt tabulku (id_knihy, klicove_slovo)? Sice by si musel projít všechny popisy a vložit klíčové slova z popisu do tabulky, ale pokud pak budeš vyhledávat podle jednoho slova, nemyslím si že by bylo až tak náročné projet db a vrátit id knih podle klíčových slov. Hlavně nebude prohledávat pomocí reg. výrazů a tímpádem se to urychlí
No skúsim ten index pridať tak ako vravíš ty ... A tie klúčové slova má napadli len to už by trebalo od začiatku to robiť pretože je tam strašne veľa údajov DB má okolo 1,9GB
Zobrazeno 21 zpráv z 21.