Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Czy szybciej jest przekonwertować na varchar lub varchar na int podczas porównywania w MySQL?

To zależy od indeksów. Jeśli obie kolumny mają ustawione indeksy, powinieneś rzutować na int , ponieważ wystarczy porównać tylko 4 bajty. Jeśli jednak tylko varchar kolumna jest indeksowana, rzutowana na varchar .

Na końcu powinieneś mieć swoje zapytanie explain ed, aby zobaczyć, jaki indeks zostanie użyty, i odpowiednio rzucić.

Jeśli nie ustawiono indeksu, rzutowanie na int jest ogólnie lepszym podejściem. Jeśli jednak nie ma ustawionego indeksu, nie ma to większego znaczenia, indeksowanie zaoszczędziłoby znacznie więcej czasu niż wybranie prawidłowego sposobu rzutowania. Tyle że znowu stoły są małe. Wtedy to też nie ma znaczenia.

W rzeczywistości powinniśmy wziąć pod uwagę nie tylko koszty porównania, ale także rzutowania:Casting a int na varchar jest nieco szybsze niż parsowanie varchar do int . Jednak porównanie varchara, który ma co najmniej 4 znaki, sprawi, że ta przewaga będzie bezużyteczna. Jeśli Twoje wartości są zwykle wyższe niż 999, rzutuj na int będzie szybciej. Ale teraz zależy to od twojego systemu operacyjnego, architektury, zestawu instrukcji używanego przez twój plik binarny mysql i tak dalej. Jedynym sposobem na uzyskanie naprawdę wiarygodnej odpowiedzi jest:porównaj tę sytuację na komputerze docelowym.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mysql select z klauzulą ​​in nie używa indeksu

  2. Korzystanie z poprzedniego folderu danych MySQL w nowej instalacji MySQL

  3. Klauzula WHERE w instrukcji INSERT przy użyciu mysql/php

  4. Jak wstawić / pobrać plik przechowywany jako BLOB w bazie danych MySQL za pomocą Pythona?

  5. Wykonywanie wielu zapytań przy użyciu jednego obiektu instrukcji JDBC