indexovani v mysql4

Honza Pazdziora adelton na fi.muni.cz
Pátek Listopad 26 08:53:53 CET 2004


On Thu, Nov 25, 2004 at 11:34:45PM +0100, Michal Žeravík wrote:
> Dobry den.
> 
> mam tabulku
>    clanek ( id, nazev, obsah, datum, smazan(int(1)), zobraz(int(1)) )
> par selectu:
> 1.  SELECT * FROM clanek WHERE datum<now() AND smazan=0 AND zobraz=1
> 2.  SELECT * FROM clanek WHERE smazan=0 AND zobraz=1
> 
> Je treba indexovat smazan a zobraz, kdyz nabyvaji pouze 0 a 1?

Něco takového je typický kandidát na bitmapové indexy, které ale MySQL
neumí. Je samozřejmě otázka, jaké procento záznamů v tabulce clanek
bude podmínku smazan = 0 and zobraz = 1 splňovat. Pokud to budou tři
procenta z milionu, tak se vyplatí vyrobit tam normální B-tree index a
používat ho. Pokud by to bylo 90 procent, tak by použití indexu
znamenalo v zásadě dvojí práci s diskem (nejprve načtení záznamu
v indexu a následně záznamu v tabulce), tam by samozřejmě byl efekt
spíše negativní.

Nejjednodušší je prostě ten výkon v obou situacích změřit.

-- 
------------------------------------------------------------------------
 Honza Pazdziora | adelton na fi.muni.cz | http://www.fi.muni.cz/~adelton/
 .project: Perl, mod_perl, DBI, Oracle, large Web systems, XML/XSL, ...
		Only self-confident people can be simple.


Další informace o konferenci Test