Autor Zpráva
nethor
Profil
Zdravím,
v db mám tabulku, ve které je uloženo, jaký uživatel smí upravovat kterou stránku:
CREATE TABLE `psat` (
`id_stranky`     int     NOT NULL ,                        
`uzivatel`    int     NOT NULL 
) ; 
Záznamů v tabulce ~100 řádků.

Má význam použít key?
CREATE TABLE `psat` (
`id_stranky`     int     NOT NULL ,                        
`uzivatel`    int     NOT NULL ,        
KEY id_stranky (id_stranky)    
) ; 
Tori
Profil
nethor:
A na co se té tabulky budete ptát:
1. Najdi všechny uživatele, kteří můžou editovat tuhle stránku (= index na id_stranky), nebo
2. Může tento uživatel editovat tuto stránku? (= index přes oba sloupce), nebo
3. obě varianty (= index přes oba sloupce, přičemž id_stranky uvedete jako první)
Podle mě to význam má, dost možná se pak budou příslušné hodnoty číst jen z indexu, aniž by bylo nutné hledat příslušný řádek, což je rychlejší.
Kajman
Profil
On tam stejně patří primární klíč na kombinaci těch dvou sloupců.
nethor
Profil
Tori:
Dotazy jsou prakticky 2:
* Může tento uživatel editovat tuto stránku?
* Které stránky může upravovat uživatel = id ?

Kajman:
primární klíč na kombinaci dvou sloupců

Tedy takto?:
CREATE TABLE `psat` (
`id_stranky`     int     NOT NULL ,                        
`uzivatel`    int     NOT NULL ,        
PRIMARY KEY pagesuser (id_stranky,uzivatel)    
) ; 
Tori
Profil
nethor:
Dotazy jsou prakticky 2:
* Může tento uživatel editovat tuto stránku?
* Které stránky může upravovat uživatel = id ?
Tak potom spíš PRIMARY KEY pagesuser (uzivatel,id_stranky) - aby mohlo MySQL využít index i při tomto vyhledávání. Když se vyhledává Aby se mohlo vyhledávat podle části vícesloupcového indexu, tak tou částí musí index začínat. viz 8.5.3. How MySQL Uses Indexes
nethor
Profil
Tori:

Aha, díky.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: