sql >> Databáze >  >> RDS >> Mysql

Je pro výkon špatné vybrat všechny sloupce?

Problém zde není ani tak záležitostí databázového serveru, ale pouze síťové komunikace. Výběrem všech sloupců najednou říkáte serveru, aby se k vám vrátil, všechny sloupce najednou. Pokud jde o obavy týkající se IO a toho všeho, ty jsou pěkně vyřešeny v otázce a odpovědi, kterou @Karamba uvedl v komentáři:vybrat * vs vybrat sloupec . Ale pro většinu aplikací v reálném světě (a já používám "aplikace" v každém smyslu) je hlavním problémem pouze síťový provoz a jak dlouho trvá serializace, přenos a deserializace dat. I když ve skutečnosti je odpověď v obou případech stejná.

Takže stažení všech sloupců je skvělé, pokud je máte v úmyslu použít všechny, ale to může znamenat spoustu dalšího přenosu dat, zvláště pokud ve svých sloupcích ukládáte, řekněme, dlouhé řetězce. V mnoha případech bude samozřejmě rozdíl nezjistitelný a většinou jde jen o princip. Ne všichni, ale významná většina.

Je to opravdu jen kompromis mezi vaší výše zmíněnou leností (a věřte mi, všichni to tak cítíme) teď a jak důležitý je výkon skutečně je.

To vše, pokud uděláte zamýšlíte použít všechny hodnoty sloupců, je mnohem lepší je stáhnout všechny najednou, než zadávat spoustu dotazů.

Představte si to jako vyhledávání na webu:provedete vyhledávání, najdete svou stránku a potřebujete pouze jeden detail. Můžete si přečíst celou stránku a vědět vše o tématu, nebo můžete jen přejít na část o tom, co hledáte, a hotovo. Ten druhý je mnohem rychlejší, pokud je to vše, co kdy chcete, ale pokud se pak budete muset dozvědět o dalších aspektech, bude mnohem lepší, když si je přečtete poprvé, než abyste museli znovu hledat a najít na webu o tom mluvit.

Pokud si nejste jisti, zda budete v budoucnu potřebovat hodnoty ostatních sloupců, pak se jako vývojář musíte obrátit na vás, který případ je pravděpodobnější.

Vše závisí na tom, jaká je vaše aplikace, jaká jsou vaše data, jak je používáte a jak důležitý je výkon skutečně je pro vás.



  1. Jak převést z jednoho formátu data na jiný v SQL Server pomocí CONVERT()

  2. Jak odstranit všechny primární klíče ze všech tabulek v databázi SQL Server - SQL Server / TSQL výukový program, část 65

  3. Jak najít všechny tabulky, které mají cizí klíče, které odkazují na konkrétní table.column a mají hodnoty pro tyto cizí klíče?

  4. Pole data a času v MySQL a letní čas – jak mohu odkazovat na hodinu navíc?