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

Je rychlejší převést na varchar nebo varchar na int při porovnání v MySQL?

To záleží na indexech. Pokud mají oba sloupce nastavené indexy, měli byste přetypovat na int , protože potřebuje porovnat pouze 4 bajty. Pokud však pouze varchar sloupec je indexován, přetypován na varchar .

Na konci byste měli svůj dotaz explain ed, abyste viděli, jaký index se používá, a podle toho přetypujte.

Pokud není nastaven žádný index, přetypování na int je obecně lepší přístup. Pokud však není nastaven žádný index, je to vlastně jedno, indexováním byste ušetřili mnohem více času než výběrem správného způsobu přetypování. Až na to, že stoly jsou opět malé. Pak na tom vlastně ani nezáleží.

Ve skutečnosti bychom měli vzít v úvahu nejen náklady na srovnání, ale také na casting:Casting an int na varchar je o něco rychlejší než analýza varchar na int . Porovnáním varcharu, který má alespoň 4 znaky, však bude tato výhoda zbytečná. Pokud mají vaše hodnoty tendenci být vyšší než 999, přetypujte na int bude rychlejší. Ale to nyní závisí na vašem operačním systému, architektuře, instrukční sadě používané vaší binárkou mysql a tak dále. Jediný způsob, jak získat skutečně spolehlivou odpověď, je:Porovnat tuto situaci na cílovém počítači.




  1. AWS Aurora:Server MySQL běží s volbou --read-only, takže nemůže provést tento příkaz

  2. Rozdělení hodnot s oddělovači ve sloupci SQL do více řádků

  3. Výkon MySQL – 5 parametrů z konfiguračního souboru

  4. php POST formulář pro aktualizaci dynamické proměnné