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