Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[MySQL] Indexen op gegroepeerde primary key

Pagina: 1
Acties:

  • ZeroXT
  • Registratie: December 2007
  • Laatst online: 26-11 11:58
Ik kwam dit tegen in een oude database van mij:
code:
1
2
3
4
5
6
7
8
CREATE TABLE IF NOT EXISTS `config` (
  `site_id` int(11) NOT NULL DEFAULT '0',
  `config_optie` varchar(255) NOT NULL DEFAULT '',
  `config_waarde` text,
  PRIMARY KEY (`site_id`,`config_optie`),
  KEY `config_site_id` (`site_id`),
  KEY `config_optie` (`config_optie`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;


Hierin is duidelijk dat er twee indexes geplaatst worden op twee kolommen terwijl die twee kolommen ook gezamenlijk de primary key zijn.

Op moment dat je een primary key set op twee of meer kolommen, moet er dan nog een index geplaatst worden op die twee kolommen? :)

Verwijderd

De key config_site_id is overbodig en zal in praktijk nooit worden gebruikt. De key config_optie is wel nuttig als je queries hebt waarin wordt geselecteerd of gesorteerd op de config_optie kolom maar niets wordt gedaan met de site_id kolom. Ik vermoed dat dat in jouw geval nooit voorkomt en dat je dus beide indexes kunt verwijderen.

Maar als je twijfelt: log_queries_not_using_indexes is handig en nuttig.

  • ZeroXT
  • Registratie: December 2007
  • Laatst online: 26-11 11:58
Bedankt voor je antwoord. Wanneer er een query wordt gebruikt zoals deze:

code:
1
SELECT config_optie FROM config WHERE site_id = 1 ORDER BY config_optie DESC


Dan wordt de site_id kolom gebruikt en hoeft er dus geen index op de config_optie kolom als ik dat goed begrijp uit je verhaal?

Ik zal eens kijken naar log_queries_not_using_indexes.