Tabela 1:
CREATE TABLE IF NOT EXISTS `tabela1` (
`idbiuletyn` bigint(20) unsigned NOT NULL auto_increment,
`data_dodania` timestamp NOT NULL default CURRENT_TIMESTAMP,
`pozycja` bigint(20) unsigned NOT NULL,
`data_publikacji` date NOT NULL,
`nazwa` tinytext NOT NULL,
`ulica` tinytext NOT NULL,
`nr_domu` varchar(20) NOT NULL,
`nr_miesz` varchar(20) NOT NULL,
`miejscowosc` int(10) unsigned NOT NULL default '0',
`kod_poczt` char(6) NOT NULL,
`wojewodztwo` int(10) unsigned NOT NULL default '0',
`tel` varchar(60) NOT NULL,
`fax` varchar(60) NOT NULL,
`internet` tinytext NOT NULL,
`regon` varchar(20) NOT NULL,
`e_mail` tinytext NOT NULL,
`ogloszenie` char(6) NOT NULL,
`rodzaj_zam` text NOT NULL,
`nazwa_zamowienia` text NOT NULL,
`rodz_zam` char(1) NOT NULL,
`przedmiot_zam` text NOT NULL,
`kod_trybu` char(2) NOT NULL,
`data_skl` char(10) NOT NULL,
PRIMARY KEY (`idbiuletyn`),
UNIQUE KEY `pozycja` (`pozycja`,`data_publikacji`),
KEY `miejscowosc` (`miejscowosc`),
KEY `wojewodztwo` (`wojewodztwo`),
KEY `data_dodania` (`data_dodania`),
KEY `kod_trybu` (`kod_trybu`),
FULLTEXT KEY `nazwa` (`nazwa`,`rodzaj_zam`,`nazwa_zamowienia`,`przedmiot_zam`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=571401 ;
Tabela 2:
CREATE TABLE IF NOT EXISTS `wojewodztwa` (
`idw` int(11) NOT NULL auto_increment,
`nazwa` varchar(20) character set utf8 collate utf8_unicode_ci default NULL,
PRIMARY KEY (`idw`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=42 ;
Tabela 3:
CREATE TABLE IF NOT EXISTS `biuletyn_kategorie` (
`idbiuletyn` bigint(20) NOT NULL,
`idm` int(11) NOT NULL,
PRIMARY KEY (`idbiuletyn`,`idm`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
I zapytanie wygląda tak:
SELECT data_publikacji, pozycja, nazwa_zamowienia, idbiuletyn, w.nazwa AS wojewodztwo, m.nazwa AS miejscowosc FROM tabela1 b JOIN biuletyn_kategorie USING
(idbiuletyn) JOIN wojewodztwa w ON b.wojewodztwo = w.idw JOIN miasto m ON b.miejscowosc = m.idm WHERE idbiuletyn > "40767" ORDER BY data_publikacji, pozycja LIMIT 1;
Tabela 1 posiada 554tys rekordow, wojewodztwa: 41, biuletyn_kategorie: 342tys
Zapytanie trwa 11 sekund.