Как сделать запрос быстрее сравнения между разными типами данных в MYSQL - PullRequest
1 голос
/ 26 марта 2012

1) Мой вопрос таков: когда у меня есть две большие таблицы, которые нельзя изменить из-за их размеров.Теперь мне нужно присоединиться к ним в общем поле и теперь сравнить одно поле из таблицы, в которой есть одинаковые данные, но один тип данных - int, а другой - varchar.Я знаю, что мы можем сделать это легко, но когда таблица имеет миллионы записей, тогда сравнение между двумя различными типами данных замедляется, как я могу сделать это быстро.

2) мой аналогичный второй вопрос заключается в том, что когда у меня естьобъединить две таблицы в некотором поле, таком как id, и которое имеет другой тип данных в обеих таблицах.как один - int, а другой - char ..... как я могу объединить эти две таблицы, потому что я не могу ждать в течение многих дней.

(Одно из решений, которое я попытался, - создать новую таблицу как реферат (в файле из файла) старых. Хотя теперь я изменил тип данных с char на int во время создания таблицы, а затем взял входящий файл)

Если у кого-нибудь есть какое-либо другое решение, пожалуйста, поделитесь

Ответы [ 3 ]

1 голос
/ 26 марта 2012

Убедитесь, что преобразование происходит в первой таблице в соединении, таким образом:

  1. преобразование происходит только один раз в строке.
  2. индексы можно использовать для объединения свторая таблица

, например:

select * 
from table1
join table2 on table2.intcol = cast(table1.varcharcol as signed)

В этом примере запроса будет использоваться индекс table2.intcol (если он существует) для объединения двух таблиц.

0 голосов
/ 29 марта 2012
select * 
from table1
join table2 on table2.intcol = cast(col as int)
0 голосов
/ 28 марта 2012

Да, приведение может использоваться для изменения типов данных

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...