sql >> Databasteknik >  >> RDS >> Mysql

Går det snabbare att konvertera till varchar eller varchar till int när man jämför i MySQL?

Det beror på indexen. Om båda kolumnerna har index inställda bör du casta till int , eftersom den bara behöver jämföra 4 byte. Om dock endast varchar kolumnen indexeras, cast till varchar .

I slutet bör du få din fråga explain ed, för att se vilket index som används, och cast därefter.

Om inget index är inställt, casta till int är det bättre tillvägagångssättet i allmänhet. Men om det inte finns något index inställt spelar det egentligen ingen roll, du skulle spara mycket mer tid genom att indexera än genom att välja rätt sätt att casta. Förutom, återigen, tabellerna är små. Sedan spelar det inte så stor roll heller.

Faktum är att vi inte bara bör ta hänsyn till kostnaderna för jämförelse, utan också för gjutning:Casting an int till en varchar är något snabbare än att analysera en varchar till en int . Men att jämföra en varchar som har minst 4 tecken kommer att göra den fördelen värdelös. Om dina värden tenderar att vara högre än 999, casta till int kommer att bli snabbare. Men det beror nu på ditt operativsystem, arkitekturen, instruktionsuppsättningen som används av din mysql-binär och så vidare. Det enda sättet att få ett riktigt tillförlitligt svar är:Benchmarkera den situationen på målmaskinen.




  1. FEL:funktioner i indexuttryck måste markeras IMMUTABEL i Postgres

  2. Arbeta med SQL-markörer

  3. Generera n rader med NULL i PostgreSQL

  4. Välj data från visa tabeller MySQL-fråga