sql >> Database teknologi >  >> RDS >> Mysql

Er det hurtigere at konvertere til varchar eller varchar til int, når man sammenligner i MySQL?

Det afhænger af indekserne. Hvis begge kolonner har indekser indstillet, skal du caste til int , fordi den kun skal sammenligne 4 bytes. Hvis dog kun varchar kolonne er indekseret, cast til varchar .

Til sidst skal du have din forespørgsel explain ed, for at se hvilket indeks der bliver brugt, og cast derefter.

Hvis der ikke er indstillet et indeks, cast til int er den bedre tilgang generelt. Men hvis der ikke er et indekssæt, betyder det ikke rigtig noget, du vil spare meget mere tid ved at indeksere end ved at vælge den korrekte måde at kaste på. Bortset fra igen, at bordene er små. Så er det heller ikke lige meget.

Faktisk bør vi ikke kun tage højde for omkostningerne til sammenligning, men også til casting:Casting an int til en varchar er lidt hurtigere end at parse en varchar til en int . Men at sammenligne en varchar, der har mindst 4 tegn, vil gøre denne fordel ubrugelig. Hvis dine værdier har tendens til at være højere end 999, skal du caste til int vil være hurtigere. Men det afhænger nu af dit operativsystem, arkitekturen, instruktionssættet brugt af din mysql binære og så videre. Den eneste måde at få et rigtig pålideligt svar på er:Benchmark den situation på målmaskinen.




  1. Flutter forbinder til en database på serveren

  2. Hvor meget hurtigere er MyISAM sammenlignet med InnoDB?

  3. SQLite kan ikke åbne databasefil (kode 14) ved hyppig SELECT-forespørgsel

  4. enum('yes', 'no') vs tinyint -- hvilken skal man bruge?