Internet Info, s.r.o. Lupa Měšec Podnikatel Root Zdroják DigiZone Slunečnice Vitalia TopDrive KupDnes Navrcholu NovýTarif Dobrý web Weblogy Woko Jagg Computer.cz SK: MojeLinky

Hlavní navigace

Úvaha ohledně zneužívání LIKE v databázích

Na svých kurzech, trochu s nadsázkou, tvrdím, že programátor, který použije LIKE, si koleduje o to nebýt programátorem. Nedávno se na dbsvětu objevil na toto téma článek. To je jistě přínosné, bohužel zmiňovaný článek nešel příliš do hloubky. Co je na tomto na první pohled neškodném operátoru tak hrozného?

Tweetni to Twitter Jaggni to! Jagg Del.icio.us Delicious

Z mého pohledu operátor LIKE podporuje šlendrián v programování – tedy umožňuje navrhnout špatné databáze a napsat špatné program, jinak řečeno – pomalé databáze a pomalé programy.

Jedno z nejdůležitějších tvrzení v IT říká, že data se snadno spojují a velice obtížně rozdělují. Významu tohoto tvrzení odpovídá i v pořadí první první normální forma (tj. požadavek na charakter ukládaných dat) – data mají být atomická – tedy dále nedělitelná. Prostě chceme mít data uložená tak, abychom je už dodatečně nemuseli rozsekávat. A přestože je toto pravidlo směšně jednoduché, vesele se porušuje. SQL tomu jakoby samo nahrává – obsahuje datový typ varchar (případně text) a operátor LIKE. Tedy do databáze můžeme uložit cokoliv a cokoliv tam také můžeme najít. Od jisté doby mám averzi k přidávání položek typu poznámka do tabulek. Uživatelé jsou schopni bez jakýchkoliv skrupulí na základě jedné frivolnější položky vytvořit vlastní informační systém v informačním systému. Taková databáze je pak postrachem a noční můrou každého programátora. 80 % dat respektuje jakási uživatelova formulovatelná pravidla, 15 % dodržuje zase jiná, a to na základě logiky, která se zdá samozřejmá pouze vybraným a dlouholetým uživatelům systému, a zbytek je dezorganizovaná směs čehokoliv. Prostě chuťovka. Jako správný programátor mám rád vše strukturované a uspořádané.

Dovolím si předpokládat, že bez operátoru LIKE by se o toto uživatel nesnažil. Proč? Protože by v životě nic nenašel. Nestrukturovaná data by tiše zmizela v nekonečných hlubinách diskových polí. Nejen uživatelé jsou schopní přetvořit IS. Mezi programátory se najde nejeden mág, který přidáním několika sloupečků, několika řádků kódu customizoval za slušný peníz nejeden IS. Ano, takovému prznění originálních IS se říká customizace – aneb jak naučit IS, který prodáváme, dělat to, co nikdy neuměl a neměl umět, ale co naši obchodníci naslibovali a prodali. O co má programátor silnější prostředky, o to větší zrůdnost dokáže vytvořit. V některých případech dokonce i ke spokojenosti zákazníků.

Jsou to dva roky, co jsem se setkal patrně s nejpomalejší aplikací svého života. Každý uživatel v této aplikaci byl identifikován e-mailem. Aplikace sloužila k uložení dokumentace a přístup k dokumentům byl založen na tom, zda se v sloupci „to:“ vyskytovala e-mailová adresa toho, či onoho uživatele. Prosté, jednoduché a až příliš jednoduché řešení, které vyhovovalo při vývoji, a které se ukázalo, jako žalostně pomalé při prvním reálném nasazení, kde dokument byl přístupný více než třem, čtyřem uživatelům. Při každém zobrazení seznamu dokumentů se prováděl dotaz:

SELECT *
   FROM documents
  WHERE "to:" ILIKE '%jmeno.prijmeni@adresa.cz%'

Nebudu se rozepisovat o náročnosti úlohy vyhledání podřetězce v řetězci (viz pattern matching && Google). V každém případě tato aplikace dokázala žhavit procesor. A to se u dedikovaných databázových serverů stává opravdu výjimečně. Opravdu nevím, z čeho mají programátoři strach, a proč nedokáží tuto úlohu řešit korektně, což znamená přidáním dvou tabulek. Pro člověka je přece jen přirozenější držet věci pohromadě – to, co jsem navrhoval před 15 lety, by taky rychlostí neoplývalo. Ale to, co vyhovuje člověku, evidentně nevyhovuje relačním databázím.

Správné řešení je použití tabulek documents(id,..), users(id,email) a vazební tabulky document_user­s(document_id, user_id).

SELECT d.*
   FROM documents d
        JOIN
        document_users du
        ON d.id = du.document_id
        JOIN
        users u
        ON du.user_id = u.id
 WHERE u.email = 'jmeno.prijmeni@adresa.cz';

Věřte nebo nevěřte, tento komplikovanější příkaz bude rychlejší (při objemu dat větším než malém). Pro druhý SQL příkaz může databázový stroj zapojit dvě své neúčinnější zbraně – indexy a planner. Při aktuálních statistikách dokáže planner s vysokou pravděpodobností trefit do počtu filtrovaných dokumentů a správně zvolit sekvenční čtení datového souboru nebo čtení dat. souboru s náhodným přístupem. Navíc minimalizuje počet porovnání řetězců (pokud budu mít index nad users(email)). Operace nad tabulkami documents a document_users jsou jen celočíselná porovnání (je jen málo rychlejších operací).

Kromě jiného mám k dispozici tabulku users – kterou mohu využít jinde, a tabulku document_users, kterou mohu použít například při počítání dokumentů, ke kterým má uživatel přístup. Do tabulky document_users mohu umístit např. informaci o tom, zda byl dokument již přečten nebo nikoliv, čas posledního přístupu, atd. atd.

SELECT count(*)
   FROM document_users du
        JOIN
        users u
        ON du.user_id = u.id
  WHERE u.email = 'jmeno.prijmeni@adresa.cz';

Toto opět může být velice rychlá operace – výhodou je fakt, že tabulka document_users je velice úzká. Tudíž se na jednu datovou stránku vejde víc záznamů a tudíž jsou IO operace velice efektivní (s minimálním dopadem na cache).

Není nad praktickou ukázku (nad db PostgreSQL 8.4). Vytvořil jsem si testovací funkce, které mi pomohou vytvořit testovací data:

CREATE OR REPLACE FUNCTION rndstr(integer)
RETURNS varchar AS $$
  SELECT array_to_string(ARRAY(SELECT substring('abcdefghijklmnopqrst' FROM (random()*20)::int FOR 1)
                                  FROM generate_series(1,$1) g(i)),
                         '')
$$ LANGUAGE sql;

CREATE OR REPLACE FUNCTION rnddoc(int)
RETURNS varchar AS $$
  SELECT array_to_string(ARRAY(SELECT rndstr((random()*3+3)::int)
                                  FROM generate_series(1, $1) g(i)),
                         ' ')
$$ LANGUAGE sql;

Dále jsem si vytvořil normalizovanou variantu tabulek:

CREATE TABLE documents(id serial PRIMARY KEY, note varchar);
INSERT INTO documents (note)
   SELECT rnddoc((random()*20+20)::int)
      FROM generate_series(1,10000); -- 10 000 dokumentu

CREATE TABLE users(id serial PRIMARY KEY, email varchar);
INSERT INTO users(email)
  SELECT rndstr((random()*3+3)::int)||'.'||rndstr((random()*3+3)::int)||'@adresa.cz'
     FROM generate_series(1,100);

-- vypsani duplicit
SELECT email
   FROM users
  GROUP BY email
  HAVING count(*) > 1;
-- pokud jsou, odstranit upravit

-- pokud nejsou, generovat unikatni index
CREATE INDEX users_email_idx ON users(email);

-- nahodne vybrane dokumenty maji 1..10 uzivatelu
CREATE TABLE document_users(document_id int, user_id int, PRIMARY KEY(document_id, user_id));

Primární index by se uplatnil, pokud bych dohledával uživatele k vybraným dokumentům. Postupuji opačně, takže přidám index:

INSERT INTO document_users
   SELECT i, unnest(u)
      FROM (SELECT i, ARRAY(SELECT DISTINCT trunc(random()*100)::int
                               FROM generate_series(1+i-i,trunc(random()*10+1)::int)
                            ) AS u
               FROM generate_series(1,10000) g(i)) x;

postgres=# \dt+
                         List of relations
 Schema |      Name      | Type  | Owner |    Size    | Description
--------+----------------+-------+-------+------------+-------------
 public | document_users | table | pavel | 1888 kB    | 53181 rows
 public | documents      | table | pavel | 1960 kB    | 10000 rows
 public | users          | table | pavel | 8192 bytes | 100 rows
(3 rows)

CREATE INDEX document_users_user_id_idx ON document_users(user_id);

-- aktualizace statistik
ANALYZE;

postgres=# SELECT * FROM users LIMIT 3;
 id |        email
----+----------------------
  1 | lrej.pnqkh@adresa.cz
  2 | qgddn.edi@adresa.cz
  3 | ekh.kcnso@adresa.cz
(3 rows)

Time: 1,567 ms
postgres=# SELECT * FROM document_users LIMIT 3;
 document_id | user_id
-------------+---------
           1 |      80
           1 |      67
           2 |      39
(3 rows)

postgres=# SELECT id, substring(note FROM 1 FOR 30) FROM documents LIMIT 3;
 id |           substring
----+--------------------------------
  1 | omhih rcf pqfbp ffco bbdgi elb
  2 | coghk atkbf okenbb gee sep erd
  3 | fqmcf qcadb pbj rsgim hcol obd
(3 rows)


-- vyberu si uzivatele s cislem 73, a pro nej zkousim
postgres=# SELECT * FROM users WHERE id = 73;
 id |        email
----+----------------------
 73 | pisrs.ikebre@adresa.cz
(1 row)

SELECT d.*
     FROM documents d
          JOIN
          document_users du
          ON d.id = du.document_id
          JOIN
          users u
          ON du.user_id = u.id
   WHERE u.email = 'pisrs.ikebre@adresa.cz';

Prováděcí plán:

                                             QUERY PLAN
----------------------------------------------------------------------------------------------------
 Nested Loop  (cost=12.38..422.83 rows=532 width=168)
   ->  Nested Loop  (cost=12.38..262.60 rows=532 width=4)
         ->  Seq Scan on users u  (cost=0.00..2.25 rows=1 width=4)
               Filter: ((email)::text = 'pisrs.ikebre@adresa.cz'::text)
         ->  Bitmap Heap Scan on document_users du  (cost=12.38..253.70 rows=532 width=8)
               Recheck Cond: (du.user_id = u.id)
               ->  Bitmap Index Scan on document_users_user_id  (cost=0.00..12.24 rows=532 width=0)
                     Index Cond: (du.user_id = u.id)
   ->  Index Scan using documents_pkey on documents d  (cost=0.00..0.29 rows=1 width=168)
         Index Cond: (d.id = du.document_id)
(10 rows)

V případě tabulky users se nepoužil index, jelikož se všechna data vejdou do jediné datové stránky.

Odhad 532 řádků, reálně 529 (čas od 12ms do 20ms).

Nyní potřebuji vygenerovat denormalizovanou tabulku ddocuments:

CREATE TABLE ddocuments(id serial PRIMARY KEY, note varchar, "to" varchar);

INSERT INTO ddocuments
   SELECT d.id, d.note, x."to"
      FROM documents d
           JOIN
           (SELECT document_id, array_to_string(array_agg(email),',') AS "to"
               FROM document_users du
                    JOIN
                    users u
                    ON du.user_id = u.id
              GROUP BY document_id) x
           ON d.id = x.document_id
     ORDER BY d.id;

postgres=# \dt+ ddocuments
                      List of relations
 Schema |    Name    | Type  | Owner |  Size   | Description
--------+------------+-------+-------+---------+-------------
 public | ddocuments | table | pavel | 3064 kB | obsahuje pouze primarni klic, 10000 radku
(1 row)

Dotaz skrz LIKE by vypadal následovně:

SELECT *
   FROM ddocuments
  WHERE "to" LIKE '%pisrs.ikebre@adresa.cz%';

                          QUERY PLAN
----------------------------------------------------------------
 Seq Scan on ddocuments  (cost=0.00..507.96 rows=554 width=278)
   Filter: (("to")::text ~~ '%pisrs.ikebre@adresa.cz%'::text)
(2 rows)

Odhad je relativně slušný, rychlost kolísá mezi 20–30ms.

Při trojnásobku počtu dokumentů je to 30ms/50ms:

                         List of relations
 Schema |      Name      | Type  | Owner |    Size    | Description
--------+----------------+-------+-------+------------+-------------
 public | ddocuments     | table | pavel | 6112 kB    | 30000
 public | document_users | table | pavel | 5680 kB    |
 public | documents      | table | pavel | 5856 kB    |
 public | users          | table | pavel | 8192 bytes |
(4 rows)

S rostoucí velikostí tabulky bude rychlost sekvenčního čtení O*N, kdežto rychlost indexů O*ln(n).

Zjevnou nevýhodou denormalizovaného modelu je náročnost operace přidání nebo odebrání přístupu k dokumentu. U normalizovaného datového modelu stačí triviální INSERT nebo DELETE. Otázka – jakým SQL příkazem bych u denormalizovaného modelu zjistil počet dokumentů pro konkrétního uživatele? V pg bych mohl napsat něco ve tvaru:

SELECT email, count(*)
   FROM (SELECT unnest(string_to_array("to",',')) AS email
            FROM ddocuments) x
  WHERE email = 'kedmo.emlap@adresa.cz'
  GROUP BY email;

Rychlost je kolem 170ms versus 5ms (normalizovaný model). Je to o dost pomalejší, a to mám k dispozici poměrně rychlé funkce na parsování řetězců a rozvinutí pole.

Pozor ale na ILIKE! Stačí drobná změna:

SELECT *
   FROM ddocuments
  WHERE "to" ILIKE '%pisrs.ikebre@adresa.cz%';

a doba provádění dotazu okamžitě vyskočí na dva a půl násobek.

Při dnešní rychlosti procesorů, a při faktu, že PostgreSQL používá sofistikovanější algoritmus hledání podřetězců v řetězci, nemusí vždy být dotazy v normalizovaném schématu rychlejší. Hodně záleží na selektivitě indexů. Každý uživatel má přístup cca k 5% dokumentů (pokud by průměrný uživatel měl přístup k více než 20% a více, tak pak naopak rychlejší může být denormalizovaná varianta (i když, to by znamenalo protažení řetězce „to“).

Zajímavý může být i pohled do cache:

Normalizovaná varianta:
postgres=# SELECT c.relname, count(*) AS buffers
               FROM pg_buffercache b INNER JOIN pg_class c
               ON b.relfilenode = c.relfilenode AND
                  b.reldatabase IN (0, (SELECT oid FROM pg_database
                                        WHERE datname = current_database()))
               GROUP BY c.relname
               ORDER BY 2 DESC LIMIT 10;
             relname             | buffers
---------------------------------+---------
 document_users                  |     649
 documents                       |     437
 documents_pkey                  |      46
 document_users_user_id          |       7

Je vidět, že se četla prakticky celá tabulka document_users (celkově se zabere 710 stránek bufferu). Je to důsledek jednoduše generovaných dat. Reálná data vytvářejí jakési shluky. Pokud bych použil příkaz CLUSTER a data fyzicky seřadil podle user_id (optimální případ), pak se z tabulky document_users přečte pouze 8 stránek (to je druhý extrém, který v praxi není pravděpodobný).

             relname             | buffers
---------------------------------+---------
 documents                       |     437
 documents_pkey                  |      46
 document_users                  |       8
 document_users_user_id          |       7
 users                           |       1

Totéž lze říci i tabulce documents – přestože se použijí indexy, prochází se více než polovina datových stránek tabulky.

Denormalizovaná varianta
            relname             | buffers
---------------------------------+---------
 ddocuments                      |     764

Pokud nechcete jít cestou normalizace, pak je tu ještě jedno možné řešení. Tímto řešením je fulltext.

CREATE INDEX ddocuments_to_fidx ON ddocuments USING gin(to_tsvector('simple', "to"));

postgres=# EXPLAIN SELECT * FROM ddocuments WHERE to_tsvector('simple',"to") @@ to_tsquery('simple','%pisrs.ikebre@adresa.cz%');
                                                  QUERY PLAN
---------------------------------------------------------------------------------------------------------------
 Bitmap Heap Scan on ddocuments  (cost=5.03..283.62 rows=100 width=278)
   Recheck Cond: (to_tsvector('simple'::regconfig, ("to")::text) @@ '''pisrs.ikebre@adresa.cz'''::tsquery)
   ->  Bitmap Index Scan on ddocuments_to_fidx  (cost=0.00..5.01 rows=100 width=0)
         Index Cond: (to_tsvector('simple'::regconfig, ("to")::text) @@ '''pisrs.ikebre@adresa.cz'''::tsquery)
(4 rows)

Pokud se data udrží v cache, pak také tyto dotazy mohou být velice rychlé. Co je důležité – automaticky je podmínka case insensitive. Odhad není nijak přesný.

Obsah cache
             relname             | buffers
---------------------------------+---------
 ddocuments                      |     586
 ddocuments_to_fidx              |       2

GIN index zajistí velice rychlé dohledání, ale jeho aktualizace je náročnější. Naopak GiST index je o dost pomalejší s mnohem rychlejší aktualizací.

             relname             | buffers
---------------------------------+---------
 ddocuments                      |     764
 ddocuments_to_fidx              |     153

Dalším kompromisním řešením je použití polí. V podstatě se jedná o formu denormalizace:

CREATE TABLE ddocuments2(id serial PRIMARY KEY, note text, "to" int[]);

INSERT INTO ddocuments2
   SELECT d.id, d.note, x."to"
      FROM documents d
           JOIN
           (SELECT document_id, array_agg(u.id) as "to"
               FROM document_users du
                    JOIN users u
                    ON du.user_id = u.id
              GROUP BY document_id) x
           ON d.id = x.document_id
     ORDER by d.id;

postgres=# EXPLAIN ANALYZE SELECT * FROM ddocuments2 WHERE "to" @> array(SELECT id FROM users WHERE email = 'pisrs.ikebre@adresa.cz');
                                                  QUERY PLAN
--------------------------------------------------------------------------------------------------------------
 Seq Scan on ddocuments2  (cost=2.25..845.01 rows=20 width=210) (actual time=0.175..41.424 rows=1044 loops=1)
   Filter: ("to" @> $0)
   InitPlan
     ->  Seq Scan on users  (cost=0.00..2.25 rows=1 width=4) (actual time=0.053..0.074 rows=1 loops=1)
           Filter: ((email)::text = 'pisrs.ikebre@adresa.cz'::text)
 Total runtime: 44.616 ms
(6 rows)

Na testovací množině o 30000 záznamech je tato varianta zhruba o 5–10 ms rychlejší než LIKE. Kritický je naprosto ustřelený odhad. To může působit následně problémy, pokud bychom tento dotaz používali např. jako pohled (view).

Můžeme zkusit přidat index:

CREATE INDEX ddocument2_to_idx ON ddocuments2 using gin ("to");

Dotazy se pak zrychlí o polovinu – cca 18ms.

             relname             | buffers
---------------------------------+---------
 ddocuments2                     |     512
 ddocument2_to_idx               |       2
 users                           |       1

V tomto případě je i zajímavý rozdíl cca 1,4 MB mezi tabulkami ddocuments a ddocuments2.

davame_internetu_obsah
       

Dnešní extrémně rychlé procesory, do jisté míry, eliminují negativní dopad operátoru LIKE na výkon. Na druhou stranu – s dostupností velkokapacitních médií roste i velikost uchovávaných dat, a tudíž je nutné mít neustále na zřeteli rychlost operací. Máme rychlejší hw, sofistikovanější sw, ale nic už tak moc neomezuje uživatele při ukládání dat.

Anketa

Používáte LIKE?

       

Závěr: Pokud to lze, pracujte s normalizovaným db modelem. Pracuje se s ním snadněji, a velká většina úloh je dostatečně rychlá (pokud není, pomohou materializované pohledy). Pokud to není možné, použijte fulltext. A pokud nemáte ani ten, tak pak vám nezbude, než použít LIKE. V tom případě, alespoň, se vyvarujte použití operátoru ILIKE.

Pavel Stěhule

Pavel Stěhule

Pavel Stěhule je odborníkem na relační databázový systém PostgreSQL, který v současnosti pracuje jako vývojář ve společnosti GoodData.

Školení: Hackujeme operační systém Android

 

Školení vám ukáže, jak se dostat k Linuxu (tzv. "rootování"), který se pod hezkou tváří Androida skrývá a jak ho naplno využít. Pomůže vám to při záloze dat, zvětšování prostoru pro aplikace nebo sdílení připojení k internetu a pokud chcete z telefonu dostat opravdové maximum, ukážeme vám, jak v něm vyměnit kompletní systém za lepší.

Podrobnější informace a přihláška

Ohodnoťte jako ve škole:
Průměrná známka 3,04

Přehled názorů

Zbytecne dlouhe
anonymní uživatel 22. 4. 2009 01:13
Nový
├ 
Re: Zbytecne dlouhe
funtomas 22. 4. 2009 08:19
Nový
│
├ 
Re: Zbytecne dlouhe
MartinP 22. 4. 2009 10:34
Nový
│
└ 
Re: Zbytecne dlouhe
Tomáš Vondra 24. 4. 2009 18:34
Nový
├ 
Re: Zbytecne dlouhe
daks 22. 4. 2009 09:06
Nový
│
└ 
Re: Zbytecne dlouhe
D.A.Tiger 22. 4. 2009 11:50
Nový
│
 
└ 
Re: Zbytecne dlouhe
Ksl 22. 4. 2009 16:20
Nový
└ 
Re: Zbytecne dlouhe
abendak 23. 4. 2009 07:32
Nový
 
└ 
Re: Zbytecne dlouhe
db-man 27. 4. 2009 15:34
Nový
i LIKE it
Lael Ophir 22. 4. 2009 02:00
Nový
└ 
Re: i LIKE it
marmax 22. 4. 2009 13:52
Nový
 
└ 
Re: i LIKE it
jos 23. 4. 2009 13:55
Nový
 
 
└ 
Re: i LIKE it
Jarda 27. 4. 2009 21:21
Nový
 
 
 
└ 
Re: i LIKE it
Tomáš Vondra 27. 4. 2009 22:50
Nový
Arogantní text bez komplexního přemýšlení
NOT LIKE(AUTOR) 22. 4. 2009 02:10
Nový
├ 
Re: Arogantní text bez komplexního přemýšlení
Pavel Stěhule 22. 4. 2009 02:21
Nový
│
├ 
Re: Arogantní text bez komplexního přemýšlení
LENIN POWER! 22. 4. 2009 08:58
Nový
│
│
└ 
Re: Arogantní text bez komplexního přemýšlení
Peter Helcmanovsky 22. 4. 2009 09:13
Nový
│
│
 
└ 
Re: Arogantní text bez komplexního přemýšlení
LENIN POWER! 22. 4. 2009 10:23
Nový
│
│
 
 
└ 
Re: Arogantní text bez komplexního přemýšlení
Suchý čert 22. 4. 2009 11:07
Nový
│
│
 
 
 
├ 
Re: Arogantní text bez komplexního přemýšlení
Pavel Stěhule 22. 4. 2009 11:19
Nový
│
│
 
 
 
│
├ 
Re: Arogantní text bez komplexního přemýšlení
LENIN POWER! 22. 4. 2009 11:34
Nový
│
│
 
 
 
│
├ 
Re: Arogantní text bez komplexního přemýšlení
backup 22. 4. 2009 12:00
Nový
│
│
 
 
 
│
│
├ 
Re: Arogantní text bez komplexního přemýšlení
Karel 22. 4. 2009 13:00
Nový
│
│
 
 
 
│
│
│
└ 
Re: Arogantní text bez komplexního přemýšlení
pavol 22. 4. 2009 13:11
Nový
│
│
 
 
 
│
│
│
 
├ 
Re: Arogantní text bez komplexního přemýšlení
melkor 23. 4. 2009 07:54
Nový
│
│
 
 
 
│
│
│
 
│
└ 
Re: Arogantní text bez komplexního přemýšlení
Sten 23. 4. 2009 11:00
Nový
│
│
 
 
 
│
│
│
 
│
 
└ 
Re: Arogantní text bez komplexního přemýšlení
Lael Ophir 23. 4. 2009 20:44
Nový
│
│
 
 
 
│
│
│
 
│
 
 
├ 
Re: Arogantní text bez komplexního přemýšlení
Ksl 23. 4. 2009 20:49
Nový
│
│
 
 
 
│
│
│
 
│
 
 
│
└ 
Re: Arogantní text bez komplexního přemýšlení
Tomáš Vondra 24. 4. 2009 18:45
Nový
│
│
 
 
 
│
│
│
 
│
 
 
├ 
Re: Arogantní text bez komplexního přemýšlení
Pavel Stěhule 23. 4. 2009 20:58
Nový
│
│
 
 
 
│
│
│
 
│
 
 
├ 
Re: Arogantní text bez komplexního přemýšlení
Franta Kučera 23. 4. 2009 21:51
Nový
│
│
 
 
 
│
│
│
 
│
 
 
│
└ 
Re: Arogantní text bez komplexního přemýšlení
Lael Ophir 24. 4. 2009 17:00
Nový
│
│
 
 
 
│
│
│
 
│
 
 
│
 
├ 
Re: Arogantní text bez komplexního přemýšlení
LENIN POWER! 24. 4. 2009 17:51
Nový
│
│
 
 
 
│
│
│
 
│
 
 
│
 
└ 
Re: Arogantní text bez komplexního přemýšlení
Tomáš Vondra 24. 4. 2009 23:33
Nový
│
│
 
 
 
│
│
│
 
│
 
 
├ 
Re: Arogantní text bez komplexního přemýšlení
Sten 23. 4. 2009 23:14
Nový
│
│
 
 
 
│
│
│
 
│
 
 
│
└ 
Re: Arogantní text bez komplexního přemýšlení
anonymní uživatel 23. 4. 2009 23:43
Nový
│
│
 
 
 
│
│
│
 
│
 
 
└ 
Re: Arogantní text bez komplexního přemýšlení
Tomáš Vondra 24. 4. 2009 18:43
Nový
│
│
 
 
 
│
│
│
 
└ 
Re: Arogantní text bez komplexního přemýšlení
Tomáš Vondra 24. 4. 2009 23:23
Nový
│
│
 
 
 
│
│
│
 
 
└ 
Re: Arogantní text bez komplexního přemýšlení
Lael Ophir 25. 4. 2009 19:14
Nový
│
│
 
 
 
│
│
│
 
 
 
└ 
Re: Arogantní text bez komplexního přemýšlení
anonymní uživatel 25. 4. 2009 19:29
Nový
│
│
 
 
 
│
│
│
 
 
 
 
├ 
Re: Arogantní text bez komplexního přemýšlení
Lael Ophir 25. 4. 2009 19:44
Nový
│
│
 
 
 
│
│
│
 
 
 
 
├ 
profi db
LENIN POWER! 25. 4. 2009 22:26
Nový
│
│
 
 
 
│
│
│
 
 
 
 
│
├ 
Re: profi db
anonymní uživatel 25. 4. 2009 22:46
Nový
│
│
 
 
 
│
│
│
 
 
 
 
│
│
└ 
Re: profi db
LENIN POWER! 26. 4. 2009 00:10
Nový
│
│
 
 
 
│
│
│
 
 
 
 
│
│
 
└ 
Re: profi db
Tomáš Vondra 26. 4. 2009 00:25
Nový
│
│
 
 
 
│
│
│
 
 
 
 
│
│
 
 
└ 
Re: profi db
LENIN POWER! 26. 4. 2009 11:49
Nový
│
│
 
 
 
│
│
│
 
 
 
 
│
│
 
 
 
├ 
Re: profi db
Tomáš Vondra 26. 4. 2009 17:16
Nový
│
│
 
 
 
│
│
│
 
 
 
 
│
│
 
 
 
│
└ 
Re: profi db
LENIN POWER! 26. 4. 2009 21:36
Nový
│
│
 
 
 
│
│
│
 
 
 
 
│
│
 
 
 
│
 
└ 
Re: profi db
X 26. 4. 2009 21:43
Nový
│
│
 
 
 
│
│
│
 
 
 
 
│
│
 
 
 
└ 
Re: profi db
Ksl 26. 4. 2009 18:30
Nový
│
│
 
 
 
│
│
│
 
 
 
 
│
│
 
 
 
 
└ 
Re: profi db
LENIN POWER! 26. 4. 2009 20:19
Nový
│
│
 
 
 
│
│
│
 
 
 
 
│
└ 
Re: profi db
Tomáš Vondra 25. 4. 2009 22:51
Nový
│
│
 
 
 
│
│
│
 
 
 
 
│
 
└ 
Re: profi db
LENIN POWER! 26. 4. 2009 00:19
Nový
│
│
 
 
 
│
│
│
 
 
 
 
│
 
 
└ 
Re: profi db
Tomáš Vondra 26. 4. 2009 03:11
Nový
│
│
 
 
 
│
│
│
 
 
 
 
│
 
 
 
└ 
Re: profi db
LENIN POWER! 26. 4. 2009 13:47
Nový
│
│
 
 
 
│
│
│
 
 
 
 
│
 
 
 
 
└ 
Re: profi db
Tomáš Vondra 26. 4. 2009 17:24
Nový
│
│
 
 
 
│
│
│
 
 
 
 
│
 
 
 
 
 
└ 
Re: profi db
LENIN POWER! 26. 4. 2009 21:43
Nový
│
│
 
 
 
│
│
│
 
 
 
 
│
 
 
 
 
 
 
└ 
Re: profi db
Tomáš Vondra 27. 4. 2009 01:08
Nový
│
│
 
 
 
│
│
│
 
 
 
 
│
 
 
 
 
 
 
 
└ 
Re: profi db
LENIN POWER! 27. 4. 2009 14:39
Nový
│
│
 
 
 
│
│
│
 
 
 
 
│
 
 
 
 
 
 
 
 
├ 
Re: profi db
Pavel Stěhule 27. 4. 2009 15:14
Nový
│
│
 
 
 
│
│
│
 
 
 
 
│
 
 
 
 
 
 
 
 
│
└ 
pgsql
LENIN POWER! 28. 4. 2009 02:42
Nový
│
│
 
 
 
│
│
│
 
 
 
 
│
 
 
 
 
 
 
 
 
│
 
└ 
Re: pgsql
Pavel Stěhule 28. 4. 2009 06:46
Nový
│
│
 
 
 
│
│
│
 
 
 
 
│
 
 
 
 
 
 
 
 
│
 
 
└ 
Re: pgsql
LENIN POWER! 30. 4. 2009 19:51
Nový
│
│
 
 
 
│
│
│
 
 
 
 
│
 
 
 
 
 
 
 
 
│
 
 
 
└ 
Re: pgsql
Pavel Stěhule 30. 4. 2009 20:33
Nový
│
│
 
 
 
│
│
│
 
 
 
 
│
 
 
 
 
 
 
 
 
└ 
Re: profi db
Tomáš Vondra 27. 4. 2009 15:23
Nový
│
│
 
 
 
│
│
│
 
 
 
 
└ 
Re: Arogantní text bez komplexního přemýšlení
Tomáš Vondra 25. 4. 2009 22:31
Nový
│
│
 
 
 
│
│
│
 
 
 
 
 
└ 
Re: Arogantní text bez komplexního přemýšleníRe: Arogantní text bez…
Jan Seifert 28. 4. 2009 11:33
Nový
│
│
 
 
 
│
│
└ 
Re: Arogantní text bez komplexního přemýšlení
Tomáš Vondra 24. 4. 2009 18:07
Nový
│
│
 
 
 
│
├ 
Re: Arogantní text bez komplexního přemýšlení
pavol 22. 4. 2009 12:51
Nový
│
│
 
 
 
│
│
├ 
Re: Arogantní text bez komplexního přemýšlení
Jencek 23. 4. 2009 01:39
Nový
│
│
 
 
 
│
│
│
└ 
Re: Arogantní text bez komplexního přemýšlení
Lael Ophir 23. 4. 2009 20:48
Nový
│
│
 
 
 
│
│
│
 
└ 
Re: Arogantní text bez komplexního přemýšlení
Sten 23. 4. 2009 23:16
Nový
│
│
 
 
 
│
│
│
 
 
├ 
Re: Arogantní text bez komplexního přemýšlení
Ksl 23. 4. 2009 23:46
Nový
│
│
 
 
 
│
│
│
 
 
└ 
Re: Arogantní text bez komplexního přemýšlení
Lael Ophir 24. 4. 2009 17:03
Nový
│
│
 
 
 
│
│
│
 
 
 
└ 
Re: Arogantní text bez komplexního přemýšlení
Sten 24. 4. 2009 17:14
Nový
│
│
 
 
 
│
│
│
 
 
 
 
└ 
Re: Arogantní text bez komplexního přemýšlení
Lael Ophir 24. 4. 2009 17:45
Nový
│
│
 
 
 
│
│
└ 
Re: Arogantní text bez komplexního přemýšlení
LENIN POWER! 23. 4. 2009 23:56
Nový
│
│
 
 
 
│
│
 
└ 
Re: Arogantní text bez komplexního přemýšlení
Sten 24. 4. 2009 17:18
Nový
│
│
 
 
 
│
│
 
 
└ 
Re: Arogantní text bez komplexního přemýšlení
Lael Ophir 24. 4. 2009 17:39
Nový
│
│
 
 
 
│
│
 
 
 
├ 
Re: Arogantní text bez komplexního přemýšlení
Tomáš Vondra 24. 4. 2009 18:50
Nový
│
│
 
 
 
│
│
 
 
 
└ 
Re: Arogantní text bez komplexního přemýšlení
JS 24. 4. 2009 19:48
Nový
│
│
 
 
 
│
│
 
 
 
 
├ 
Re: Arogantní text bez komplexního přemýšlení
Tomáš Vondra 24. 4. 2009 23:26
Nový
│
│
 
 
 
│
│
 
 
 
 
│
└ 
Re: Arogantní text bez komplexního přemýšlení
JS 25. 4. 2009 09:23
Nový
│
│
 
 
 
│
│
 
 
 
 
└ 
Re: Arogantní text bez komplexního přemýšlení
Lael Ophir 25. 4. 2009 19:43
Nový
│
│
 
 
 
│
│
 
 
 
 
 
├ 
Re: Arogantní text bez komplexního přemýšlení
anonymní uživatel 25. 4. 2009 20:11
Nový
│
│
 
 
 
│
│
 
 
 
 
 
│
└ 
Re: Arogantní text bez komplexního přemýšlení
Lael Ophir 25. 4. 2009 21:18
Nový
│
│
 
 
 
│
│
 
 
 
 
 
│
 
└ 
Re: Arogantní text bez komplexního přemýšlení
LENIN POWER! 25. 4. 2009 22:01
Nový
│
│
 
 
 
│
│
 
 
 
 
 
└ 
Re: Arogantní text bez komplexního přemýšlení
HKMaly 2. 5. 2009 16:21
Nový
│
│
 
 
 
│
│
 
 
 
 
 
 
└ 
Re: Arogantní text bez komplexního přemýšlení
Lael Ophir 5. 5. 2009 01:48
Nový
│
│
 
 
 
│
└ 
Re: Arogantní text bez komplexního přemýšlení
Suchý čert 22. 4. 2009 15:59
Nový
│
│
 
 
 
│
 
└ 
Re: Arogantní text bez komplexního přemýšlení
backup 22. 4. 2009 16:02
Nový
│
│
 
 
 
│
 
 
└ 
Re: Arogantní text bez komplexního přemýšlení
Suchý čert 22. 4. 2009 17:27
Nový
│
│
 
 
 
│
 
 
 
└ 
Re: Arogantní text bez komplexního přemýšlení
LENIN POWER! 22. 4. 2009 19:12
Nový
│
│
 
 
 
│
 
 
 
 
└ 
Re: Arogantní text bez komplexního přemýšlení
Suchý čert 22. 4. 2009 19:58
Nový
│
│
 
 
 
│
 
 
 
 
 
└ 
mysql a atomicita statementu
LENIN POWER! 22. 4. 2009 20:54
Nový
│
│
 
 
 
│
 
 
 
 
 
 
└ 
Re: mysql a atomicita statementu
Suchý čert 22. 4. 2009 22:45
Nový
│
│
 
 
 
└ 
Re: Arogantní text bez komplexního přemýšlení
Tomáš Vondra 24. 4. 2009 18:40
Nový
│
└ 
Re: Arogantní text bez komplexního přemýšlení
Tomáš Vondra 24. 4. 2009 18:23
Nový
└ 
Re: Arogantní text bez komplexního přemýšlení
Raulik 22. 4. 2009 02:54
Nový
 
├ 
Re: Arogantní text bez komplexního přemýšlení
N/A 22. 4. 2009 06:08
Nový
 
│
├ 
Re: Arogantní text bez komplexního přemýšlení
pepak 22. 4. 2009 06:14
Nový
 
│
│
├ 
Re: Arogantní text bez komplexního přemýšlení
Xerces 22. 4. 2009 09:07
Nový
 
│
│
└ 
Re: Arogantní text bez komplexního přemýšlení
martin 23. 4. 2009 09:47
Nový
 
│
└ 
Re: Arogantní text bez komplexního přemýšlení
Tomáš Vondra 24. 4. 2009 18:29
Nový
 
└ 
Re: Arogantní text bez komplexního přemýšlení
ldx 22. 4. 2009 23:18
Nový
RE: Úvaha ohledně zneužívání LIKE v databázích
t42 22. 4. 2009 02:21
Nový
├ 
RE: Úvaha ohledně zneužívání LIKE v databázích
xurpha 22. 4. 2009 05:50
Nový
│
├ 
RE: Úvaha ohledně zneužívání LIKE v databázích
Mastodont 22. 4. 2009 06:43
Nový
│
│
├ 
RE: Úvaha ohledně zneužívání LIKE v databázích
Kamil Podlešák 22. 4. 2009 09:06
Nový
│
│
│
├ 
RE: Úvaha ohledně zneužívání LIKE v databázích
tomas z. 22. 4. 2009 09:50
Nový
│
│
│
├ 
RE: Úvaha ohledně zneužívání LIKE v databázích
Pavel Stěhule 22. 4. 2009 10:27
Nový
│
│
│
│
└ 
RE: Úvaha ohledně zneužívání LIKE v databázích
Kamil Podlešák 22. 4. 2009 11:04
Nový
│
│
│
│
 
└ 
RE: Úvaha ohledně zneužívání LIKE v databázích
Pavel Stěhule 22. 4. 2009 11:20
Nový
│
│
│
└ 
RE: Úvaha ohledně zneužívání LIKE v databázích
Tomáš Vondra 24. 4. 2009 18:59
Nový
│
│
└ 
RE: Úvaha ohledně zneužívání LIKE v databázích
Lael Ophir 23. 4. 2009 20:57
Nový
│
│
 
└ 
RE: Úvaha ohledně zneužívání LIKE v databázích
Tomáš Vondra 24. 4. 2009 19:02
Nový
│
│
 
 
├ 
RE: Úvaha ohledně zneužívání LIKE v databázích
Lael Ophir 21. 5. 2009 18:28
Nový
│
└ 
RE: Úvaha ohledně zneužívání LIKE v databázích
Tomáš Vondra 24. 4. 2009 18:55
Nový
├ 
RE: Úvaha ohledně zneužívání LIKE v databázích
anonymní uživatel 22. 4. 2009 07:49
Nový
└ 
RE: Úvaha ohledně zneužívání LIKE v databázích
Sten 22. 4. 2009 12:58
Nový
1NF je historicky nesmysl
Trm 22. 4. 2009 04:14
Nový
├ 
Re: 1NF je historicky nesmysl
Pavel Stěhule 22. 4. 2009 06:31
Nový
└ 
Re: 1NF je historicky nesmysl
anonymní uživatel 24. 4. 2009 23:14
Nový
 
└ 
Re: 1NF je historicky nesmysl
Lael Ophir 25. 4. 2009 19:28
Nový
opakování je matka moudrosti
Petr 22. 4. 2009 07:08
Nový
└ 
Re: opakování je matka moudrosti
Lael Ophir 23. 4. 2009 20:59
Nový
Pocitace vs clovek
Michal Kára 22. 4. 2009 07:47
Nový
├ 
Re: Pocitace vs clovek
Franta Kučera 22. 4. 2009 14:02
Nový
│
├ 
Re: Pocitace vs clovek
Sten 22. 4. 2009 14:09
Nový
│
│
└ 
Re: Pocitace vs clovek
Tomáš Vondra 24. 4. 2009 23:38
Nový
│
└ 
Re: Pocitace vs clovek
Xerces 22. 4. 2009 19:37
Nový
└ 
Re: Pocitace vs clovek
Sten 22. 4. 2009 14:06
Nový
 
└ 
Re: Pocitace vs clovek
Michal Kára 22. 4. 2009 14:17
Nový
 
 
└ 
Re: Pocitace vs clovek
Pavel Stěhule 22. 4. 2009 14:24
Nový
Nešlo by to napsat jinak?
Eddy Neilo 22. 4. 2009 08:09
Nový
├ 
Re: Nešlo by to napsat jinak?
Xerces 22. 4. 2009 09:11
Nový
│
└ 
Re: Nešlo by to napsat jinak?
Franta Kučera 22. 4. 2009 14:04
Nový
│
 
└ 
Re: Nešlo by to napsat jinak?
Lael Ophir 23. 4. 2009 21:08
Nový
├ 
Re: Nešlo by to napsat jinak?
kaapo 22. 4. 2009 14:30
Nový
└ 
Re: Nešlo by to napsat jinak?
supervisor 22. 4. 2009 23:06
Nový
 
└ 
Re: Nešlo by to napsat jinak?
mich 22. 4. 2009 23:53
Nový
Tentokrat se pridam ke kritikum
melkor 22. 4. 2009 08:27
Nový
├ 
Re: Tentokrat se pridam ke kritikum
neutral female gnomish Fl 22. 4. 2009 08:51
Nový
└ 
Re: Tentokrat se pridam ke kritikum
atarist 22. 4. 2009 09:05
Nový
 
└ 
Re: Tentokrat se pridam ke kritikum
Pavel 22. 4. 2009 10:09
Nový
 
 
├ 
Re: Tentokrat se pridam ke kritikum
melkor 23. 4. 2009 08:02
Nový
 
 
└ 
Re: Tentokrat se pridam ke kritikum
melkor 23. 4. 2009 08:04
Nový
GOTO je nemetodicke a kazi programy
Clock 22. 4. 2009 09:10
Nový
├ 
Re: GOTO je nemetodicke a kazi programy
atarist 22. 4. 2009 09:23
Nový
│
└ 
Re: GOTO je nemetodicke a kazi programy
Ksl 22. 4. 2009 16:36
Nový
│
 
└ 
Re: GOTO je nemetodicke a kazi programy
JS 22. 4. 2009 19:22
Nový
│
 
 
├ 
Re: GOTO je nemetodicke a kazi programy
Michal Kára 22. 4. 2009 19:56
Nový
│
 
 
├ 
Re: GOTO je nemetodicke a kazi programy
anonymní uživatel 22. 4. 2009 20:20
Nový
│
 
 
└ 
Re: GOTO je nemetodicke a kazi programy
Ksl 22. 4. 2009 20:33
Nový
│
 
 
 
└ 
Re: GOTO je nemetodicke a kazi programy
BLEK. 24. 4. 2009 03:51
Nový
│
 
 
 
 
└ 
Re: GOTO je nemetodicke a kazi programy
JS 24. 4. 2009 05:27
Nový
├ 
Re: GOTO je nemetodicke a kazi programy
Ondra "Satai" Nekola 22. 4. 2009 11:32
Nový
│
└ 
Re: GOTO je nemetodicke a kazi programy
Clock 22. 4. 2009 12:28
Nový
├ 
Re: GOTO je nemetodicke a kazi programy
mtd 22. 4. 2009 11:38
Nový
│
└ 
Re: GOTO je nemetodicke a kazi programy
Clock 22. 4. 2009 12:26
Nový
├ 
Re: GOTO je nemetodicke a kazi programy
melkor 23. 4. 2009 08:07
Nový
└ 
Re: GOTO je nemetodicke a kazi programy
IO 23. 4. 2009 11:13
Nový
To teda čumím.....
Bobrnautus 22. 4. 2009 09:16
Nový
├ 
Re: To teda čumím.....
atarist 22. 4. 2009 09:26
Nový
│
└ 
Re: To teda čumím.....
Bobrnautus 22. 4. 2009 10:32
Nový
├ 
Re: To teda čumím.....
Jirka 22. 4. 2009 09:32
Nový
│
└ 
Re: To teda čumím.....
Honza 22. 4. 2009 10:12
Nový
│
 
└ 
Re: To teda čumím.....
Jirka 22. 4. 2009 11:48
Nový
│
 
 
└ 
Re: To teda čumím.....
melkor 23. 4. 2009 08:10
Nový
└ 
Re: To teda čumím.....
Pavel Stěhule 22. 4. 2009 10:35
Nový
 
└ 
Re: To teda čumím.....
Bobrnautus 22. 4. 2009 11:45
Nový
 
 
├ 
Re: To teda čumím.....
Pavel Stěhule 22. 4. 2009 13:44
Nový
 
 
├ 
Re: To teda čumím.....
Ksl 22. 4. 2009 16:35
Nový
 
 
└ 
Re: To teda čumím.....
Tomáš Vondra 24. 4. 2009 23:51
Nový
šlendriánský neprogramátor
Honza 22. 4. 2009 09:39
Nový
├ 
Re: šlendriánský neprogramátor
atarist 22. 4. 2009 09:57
Nový
│
└ 
Re: šlendriánský neprogramátor
LENIN POWER! 22. 4. 2009 10:05
Nový
├ 
Re: šlendriánský neprogramátor
anonymní uživatel 22. 4. 2009 10:00
Nový
└ 
Re: šlendriánský neprogramátor
Pavel Stěhule 22. 4. 2009 10:21
Nový
 
├ 
Re: šlendriánský neprogramátor
LENIN POWER! 22. 4. 2009 11:07
Nový
 
├ 
Re: šlendriánský neprogramátor
Michal Kára 22. 4. 2009 11:09
Nový
 
│
└ 
Re: šlendriánský neprogramátor
Pavel Stěhule 22. 4. 2009 11:15
Nový
 
│
 
└ 
Re: šlendriánský neprogramátor
Michal Kára 22. 4. 2009 12:14
Nový
 
│
 
 
└ 
Re: šlendriánský neprogramátor
Pavel Stěhule 22. 4. 2009 14:14
Nový
 
│
 
 
 
└ 
Re: šlendriánský neprogramátor
teni 22. 4. 2009 21:33
Nový
 
├ 
Re: šlendriánský neprogramátor
//R 22. 4. 2009 11:35
Nový
 
│
└ 
Re: šlendriánský neprogramátor
backup 22. 4. 2009 11:45
Nový
 
│
 
├ 
Re: šlendriánský neprogramátor
//R 22. 4. 2009 12:07
Nový
 
│
 
└ 
Re: šlendriánský neprogramátor
Pavel Stěhule 22. 4. 2009 12:10
Nový
 
│
 
 
└ 
Re: šlendriánský neprogramátor
Pavel Stěhule 22. 4. 2009 12:13
Nový
 
└ 
Re: šlendriánský neprogramátor
Franta Kučera 22. 4. 2009 14:12
Nový
Drobné rýpnutí
Marv 22. 4. 2009 10:20
Nový
Psáno z pohledu kodéra
Petr 22. 4. 2009 10:32
Nový
├ 
Re: Psáno z pohledu kodéra
backup 22. 4. 2009 11:32
Nový
├ 
Re: Psáno z pohledu kodéra
Pavel Stěhule 22. 4. 2009 11:37
Nový
├ 
Re: Psáno z pohledu kodéra
Miloš 22. 4. 2009 16:25
Nový
│
└ 
Re: Psáno z pohledu kodéra
Michal Kára 22. 4. 2009 16:53
Nový
│
 
└ 
Re: Psáno z pohledu kodéra
Petr 22. 4. 2009 22:56
Nový
│
 
 
├ 
Re: Psáno z pohledu kodéra
melkor 23. 4. 2009 08:21
Nový
│
 
 
├ 
Re: Psáno z pohledu kodéra
Miloš 24. 4. 2009 02:54
Nový
│
 
 
│
├ 
Re: Psáno z pohledu kodéra
LENIN POWER! 24. 4. 2009 09:26
Nový
│
 
 
│
│
└ 
Re: Psáno z pohledu kodéra
Lael Ophir 24. 4. 2009 17:06
Nový
│
 
 
│
└ 
Re: Psáno z pohledu kodéra
Petr 24. 4. 2009 17:57
Nový
│
 
 
└ 
Re: Psáno z pohledu kodéra
Tomáš Vondra 25. 4. 2009 00:01
Nový
└ 
Re: Psáno z pohledu kodéra
Tomáš Vondra 24. 4. 2009 23:58
Nový
Na prefix matching LIKE (+ jednoduchy index), na ostatne FTI
Cestmir Hybl 22. 4. 2009 10:43
Nový
└ 
Re: Na prefix matching LIKE (+ jednoduchy index), na ostatne FTI
Pavel Stěhule 22. 4. 2009 11:06
Nový
Nadavate na like a select * vam nevadi
Manky 22. 4. 2009 11:03
Nový
├ 
Re: Nadavate na like a select * vam nevadi
Lojza 22. 4. 2009 11:23
Nový
│
└ 
Re: Nadavate na like a select * vam nevadi
Ksl 22. 4. 2009 16:42
Nový
├ 
Re: Nadavate na like a select * vam nevadi
Pavel Stěhule 22. 4. 2009 11:24
Nový
└ 
Re: Nadavate na like a select * vam nevadi
hulo 22. 4. 2009 15:45
Nový
 
└ 
Re: Nadavate na like a select * vam nevadi
Sten 22. 4. 2009 16:04
Nový
 
 
└ 
Re: Nadavate na like a select * vam nevadi
hulo 22. 4. 2009 16:25
Nový
 
 
 
├ 
Re: Nadavate na like a select * vam nevadi
Sten 22. 4. 2009 16:59
Nový
 
 
 
│
├ 
Re: Nadavate na like a select * vam nevadi
Pavel Stěhule 22. 4. 2009 18:00
Nový
 
 
 
│
│
└ 
Re: Nadavate na like a select * vam nevadi
hulo 23. 4. 2009 09:49
Nový
 
 
 
│
│
 
└ 
Re: Nadavate na like a select * vam nevadi
Tomáš Vondra 25. 4. 2009 00:07
Nový
 
 
 
│
└ 
Re: Nadavate na like a select * vam nevadi
hulo 23. 4. 2009 09:33
Nový
 
 
 
└ 
Re: Nadavate na like a select * vam nevadi
Zdenek Kotala 22. 4. 2009 21:18
Nový
 
 
 
 
├ 
Re: Nadavate na like a select * vam nevadi
hulo 23. 4. 2009 09:38
Nový
 
 
 
 
└ 
Re: Nadavate na like a select * vam nevadi
Tomáš Vondra 25. 4. 2009 00:09
Nový
Uff (ale stejně tleskám)
Lojza 22. 4. 2009 11:13
Nový
└ 
Re: Uff (ale stejně tleskám)
Tomáš Vondra 25. 4. 2009 00:13
Nový
Pripomienka
pavol 22. 4. 2009 11:16
Nový
├ 
Re: Pripomienka
Pavel Stěhule 22. 4. 2009 11:33
Nový
│
├ 
Re: Pripomienka
LENIN POWER! 22. 4. 2009 11:55
Nový
│
│
├ 
Re: Pripomienka
Pavel Stěhule 22. 4. 2009 12:20
Nový
│
│
│
├ 
Re: Pripomienka
LENIN POWER! 22. 4. 2009 12:31
Nový
│
│
│
│
├ 
Re: Pripomienka
Pavel Stěhule 22. 4. 2009 12:47
Nový
│
│
│
│
│
├ 
Re: Pripomienka
pavol 22. 4. 2009 13:02
Nový
│
│
│
│
│
├ 
Re: Pripomienka
Michal Kára 22. 4. 2009 13:02
Nový
│
│
│
│
│
├ 
Re: Pripomienka
LENIN POWER! 22. 4. 2009 13:10
Nový
│
│
│
│
│
│
└ 
Re: Pripomienka
Pavel Stěhule 22. 4. 2009 13:42
Nový
│
│
│
│
│
│
 
└ 
Re: Pripomienka
pavol 22. 4. 2009 13:47
Nový
│
│
│
│
│
│
 
 
├ 
Re: Pripomienka
JS 23. 4. 2009 00:45
Nový
│
│
│
│
│
│
 
 
└ 
Re: Pripomienka
Tomáš Vondra 25. 4. 2009 00:54
Nový
│
│
│
│
│
└ 
Re: Pripomienka
Lojza 22. 4. 2009 13:17
Nový
│
│
│
│
│
 
├ 
Re: Pripomienka
kaapo 23. 4. 2009 07:22
Nový
│
│
│
│
│
 
│
└ 
Re: Pripomienka
BLEK. 24. 4. 2009 04:27
Nový
│
│
│
│
│
 
│
 
└ 
Re: Pripomienka
Petr 24. 4. 2009 18:06
Nový
│
│
│
│
│
 
│
 
 
└ 
Re: Pripomienka
Lael Ophir 24. 4. 2009 19:00
Nový
│
│
│
│
│
 
│
 
 
 
└ 
Re: Pripomienka
Petr 27. 4. 2009 18:27
Nový
│
│
│
│
│
 
│
 
 
 
 
├ 
Re: Pripomienka
LENIN POWER! 27. 4. 2009 18:58
Nový
│
│
│
│
│
 
│
 
 
 
 
└ 
Re: Pripomienka
Lael Ophir 30. 4. 2009 18:01
Nový
│
│
│
│
│
 
└ 
Re: Pripomienka
BLEK. 24. 4. 2009 04:21
Nový
│
│
│
│
└ 
Re: Pripomienka
Tomáš Vondra 25. 4. 2009 00:51
Nový
│
│
│
│
 
└ 
Re: Pripomienka
LENIN POWER! 25. 4. 2009 01:05
Nový
│
│
│
└ 
Re: Pripomienka
pavol 22. 4. 2009 12:40
Nový
│
│
│
 
├ 
Re: Pripomienka
BoneFlute 23. 4. 2009 11:28
Nový
│
│
│
 
└ 
Re: Pripomienka
Tomáš Vondra 25. 4. 2009 01:02
Nový
│
│
└ 
Re: Pripomienka
Tomáš Vondra 25. 4. 2009 00:37
Nový
│
└ 
Re: Pripomienka
pavol 22. 4. 2009 12:26
Nový
│
 
└ 
Re: Pripomienka
Tomáš Vondra 25. 4. 2009 01:06
Nový
├ 
Re: Pripomienka
backup 22. 4. 2009 11:35
Nový
├ 
Re: Pripomienka
Jan Seifert 22. 4. 2009 11:43
Nový
│
├ 
Re: Pripomienka
backup 22. 4. 2009 11:48
Nový
│
│
└ 
Re: Pripomienka
Michal Kára 22. 4. 2009 12:17
Nový
│
│
 
└ 
Re: Pripomienka
Tomáš Vondra 25. 4. 2009 01:08
Nový
│
└ 
Re: Pripomienka
pavol 22. 4. 2009 12:19
Nový
│
 
└ 
Re: Pripomienka
Tomáš Vondra 25. 4. 2009 01:10
Nový
├ 
Re: Pripomienka
LENIN POWER! 22. 4. 2009 11:51
Nový
└ 
Re: Pripomienka
Tomáš Vondra 25. 4. 2009 00:22
Nový
ultimativni reseni
backup 22. 4. 2009 11:42
Nový
└ 
Re: ultimativni reseni
LENIN POWER! 22. 4. 2009 12:04
Nový
základní vyhledávání v číselnících
Marek Chlup 22. 4. 2009 11:48
Nový
├ 
Re: základní vyhledávání v číselnících
Pavel Stěhule 22. 4. 2009 12:08
Nový
│
└ 
Re: základní vyhledávání v číselnících
Marek Chlup 22. 4. 2009 12:34
Nový
│
 
└ 
Re: základní vyhledávání v číselnících
Michal Kára 22. 4. 2009 12:56
Nový
│
 
 
├ 
Re: základní vyhledávání v číselnících
yossarian 22. 4. 2009 13:05
Nový
│
 
 
│
└ 
Re: základní vyhledávání v číselnících
Michal Kára 22. 4. 2009 13:09
Nový
│
 
 
│
 
└ 
Re: základní vyhledávání v číselnících
yossarian 22. 4. 2009 13:22
Nový
│
 
 
├ 
Re: základní vyhledávání v číselnících
Marek Chlup 22. 4. 2009 13:16
Nový
│
 
 
│
└ 
Re: základní vyhledávání v číselnících
Michal Kára 22. 4. 2009 13:24
Nový
│
 
 
└ 
Re: základní vyhledávání v číselnících
Pavel Stěhule 22. 4. 2009 13:50
Nový
└ 
Re: základní vyhledávání v číselnících
Cestmir Hybl 22. 4. 2009 12:11
Nový
Souhlas
Franta Kučera 22. 4. 2009 13:28
Nový
├ 
Re: Souhlas
Pavel Stěhule 22. 4. 2009 14:23
Nový
│
├ 
Re: Souhlas
Franta Kučera 22. 4. 2009 14:48
Nový
│
└ 
Re: Souhlas
melkor 23. 4. 2009 12:16
Nový
│
 
└ 
Re: Souhlas
Franta Kučera 23. 4. 2009 13:07
Nový
└ 
Re: Souhlas
atarist 22. 4. 2009 14:29
Nový
 
└ 
Re: Souhlas
Franta Kučera 22. 4. 2009 15:17
Nový
 
 
├ 
Re: Souhlas
logik 22. 4. 2009 15:47
Nový
 
 
└ 
Re: Souhlas
Sten 22. 4. 2009 16:12
Nový
 
 
 
└ 
Re: Souhlas
LENIN POWER! 22. 4. 2009 16:37
Nový
rychlý fulltext za pět minut
Radek Tondra 22. 4. 2009 14:36
Nový
├ 
Re: rychlý fulltext za pět minut
mig 22. 4. 2009 16:06
Nový
└ 
Re: rychlý fulltext za pět minut
hacko 22. 4. 2009 16:42
Nový
 
└ 
Re: rychlý fulltext za pět minut
Franta Kučera 22. 4. 2009 17:49
Nový
DB2 COBRA 9.7 announced
LENIN POWER! 22. 4. 2009 21:45
Nový
├ 
Re: DB2 COBRA 9.7 announced
Franta Kučera 22. 4. 2009 22:14
Nový
│
└ 
Re: DB2 COBRA 9.7 announced
LENIN POWER! 22. 4. 2009 23:15
Nový
├ 
Re: DB2 COBRA 9.7 announced
Ksl 22. 4. 2009 22:23
Nový
│
└ 
Re: DB2 COBRA 9.7 announced
LENIN POWER! 23. 4. 2009 00:28
Nový
│
 
└ 
Re: DB2 COBRA 9.7 announced
Ksl 23. 4. 2009 17:12
Nový
│
 
 
└ 
Re: DB2 COBRA 9.7 announced
LENIN POWER! 23. 4. 2009 18:57
Nový
│
 
 
 
└ 
Re: DB2 COBRA 9.7 announced
Ksl 23. 4. 2009 20:23
Nový
├ 
Re: DB2 COBRA 9.7 announced
LENIN POWER! 23. 4. 2009 00:33
Nový
│
└ 
Re: DB2 COBRA 9.7 announced
Pavel Stěhule 23. 4. 2009 07:48
Nový
│
 
└ 
Re: DB2 COBRA 9.7 announced
LENIN POWER! 23. 4. 2009 11:02
Nový
│
 
 
└ 
Re: DB2 COBRA 9.7 announced
Pavel Stěhule 23. 4. 2009 12:30
Nový
└ 
Re: DB2 COBRA 9.7 announced
Pavel Stěhule 23. 4. 2009 07:47
Nový
 
└ 
Re: DB2 COBRA 9.7 announced
LENIN POWER! 23. 4. 2009 11:17
Nový
 
 
└ 
Re: DB2 COBRA 9.7 announced
Franta Kučera 23. 4. 2009 15:00
Nový
 
 
 
└ 
Re: DB2 COBRA 9.7 announced
LENIN POWER! 23. 4. 2009 16:28
Nový
 
 
 
 
└ 
Re: DB2 COBRA 9.7 announced
DK 23. 4. 2009 20:18
Nový
 
 
 
 
 
└ 
Re: DB2 COBRA 9.7 announced
LENIN POWER! 24. 4. 2009 00:59
Nový
Pro hledání chyb v zabordelené db...
Jan Michálek 23. 4. 2009 09:42
Nový
└ 
Re: Pro hledání chyb v zabordelené db...
yossarian 23. 4. 2009 09:56
Nový
 
└ 
Re: Pro hledání chyb v zabordelené db...
Jan Michálek 23. 4. 2009 10:00
Nový
vyhoda myisam
db-man 27. 4. 2009 15:31
Nový
└ 
Re: vyhoda myisam
Pavel Stěhule 28. 8. 2010 08:11
Nový
       

Tento text je již více než dva měsíce starý. Chcete-li na něj reagovat v diskusi, pravděpodobně vám již nikdo neodpoví. Pro řešení aktuálních problémů doporučujeme využít naše diskusní fórum.

Zasílat nově přidané příspěvky e-mailem