Definování MySQL bez explicitního primární klíče je velmi špatný nápad.
Pokud PK chybí, MySQL vytvoří implicitní (ale velmi skutečný) celočíselný autoinkrementační primární klíč.
Tento PK bude zahrnut v každém sekundárním klíči v InnoDB a určí vaše primární pořadí řazení v MyISAM.
Následek
Právě jste zpomalili výkon každého výběru, vložení a aktualizace.
Za žádným účelem.
InnoDB:k získání dat tabulky je vyžadováno další vyhledávání
V InnoDB je třeba provést další vyhledávání, protože všechny sekundární indexy odkazují na PK a ne na samotné řádky.
MyISAM:plýtvání místem
V MyISAM není penalizace tak velká, ale stále přetahujete 4bajtové nevyužité pole, které se nepoužívá.
InnoDB + MyISAM:zbytečné generování pole automatického přírůstku
Protože se vytvoří implicitní autoinkrementační PK a k provádění spojení jste také potřebovali další autoinkrementační klíč; Aby se předešlo duplicitním polím automatického přírůstku, máte nyní ne 1, ale 2 zámky tabulky na vložku.
InnoDB:s připojeními se výše zmíněný vyhledávací problém zdvojnásobuje
Pokud provedete spojení pomocí pole, které není PK, InnoDB musí provést další vyhledávání za spojení abyste se dostali k záznamům té druhé tabulky.
InnoDB:nejhorší ze všeho je, že ztratíte výhodu pokrytí indexů
Vypnuli jste jednu z nejlepších optimalizací v InnoDB, pokrývající indexy.
Pokud MySQL dokáže vyřešit dotaz pouze pomocí dat v indexech, nikdy nepřečte tabulku, bude to mít za následek značnou rychlost získat. Nyní, když je 50 % každého indexu v InnoDB nevyužitý prostor, právě jste smazali své šance na využití této optimalizace.
Porazte tohoto dodavatele vodítkem!
Odkazy:
http://www.xaprb.com/blog/2006/07/04/how-to-exploit-mysql-index-optimizations/
(pomalý odkaz, ale doporučujeme přečíst).
O'Reilly na krycích indexech InnoDB
http://tag1consulting.com/MySQL_Engines_MyISAM_vs_InnoDB
BTW , pokud váš dodavatel říká, že na tom moc nezáleží, protože používá MyISAM, porazte ho znovu, měli byste vždy používat InnoDB, pokud k tomu nemáte dobrý důvod.
InnoDB je ve výrobě mnohem bezpečnější, MyISAM má své používá, ale příliš snadno se poškodí.