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

È più veloce convertire in varchar o varchar in int quando si confronta in MySQL?

Dipende dagli indici. Se entrambe le colonne hanno indici impostati, dovresti eseguire il cast su int , perché deve confrontare solo 4 byte. Se, invece, solo il varchar colonna è indicizzata, cast su varchar .

Alla fine, dovresti avere la tua domanda explain ed, per vedere quale indice viene utilizzato e lanciare di conseguenza.

Se non è impostato alcun indice, trasmettere a int è l'approccio migliore in generale. Tuttavia, se non c'è un set di indici, non importa, risparmieresti molto più tempo indicizzando che scegliendo il modo corretto di trasmettere. Tranne, ancora una volta, i tavoli sono piccoli. Quindi, non importa nemmeno.

In effetti, dovremmo prendere in considerazione non solo i costi per il confronto, ma anche per il casting:Casting an int a un varchar è leggermente più veloce dell'analisi di un varchar a un int . Tuttavia, confrontare un varchar che ha almeno 4 caratteri renderà inutile quel vantaggio. Se i tuoi valori tendono a essere superiori a 999, esegui il cast su int sarà più veloce. Ma questo ora dipende dal tuo sistema operativo, dall'architettura, dal set di istruzioni utilizzato dal tuo binario mysql e così via. L'unico modo per ottenere una risposta davvero affidabile è:confrontare quella situazione sulla macchina di destinazione.