SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 17.02.2012 14:28:06

Marabuzo
Участник
Зарегистрирован: 17.02.2012
Сообщений: 4

Проверка элементов 2-х таблиц на совпадение

Здравствуйте! Есть база данных телефонных номеров, в ней две таблицы tel_new и tel_old. Первая таблица с колонками tel (varchar255) - содержит телефонные номера и prim(varchar(100) - содержит во всех строках одно значение FALSE. Вторая табличка имеет всего одну колонку, telefon с номерами телефоннов (напр. 89032345454..). Количество строк в таблицах около 2000.
Задача: Сравнить элементы двух таблиц и если элемент  из таблицы tel_new имеет значение идентичное элементу из таблицы tel_old, тогда значение столбца prim из таблицы tel_new присвоить TRUE. Задача казалось бы простая, но если использовать проверку в цикле с условием,то компьютер зависает на перебор тысячи элементов на неопределенное время. Подскажите метод преребора, пожалуйста..

Отредактированно Marabuzo (17.02.2012 14:29:19)

Неактивен

 

#2 17.02.2012 17:09:34

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Проверка элементов 2-х таблиц на совпадение

http://dev.mysql.com/doc/refman/5.5/en/update.html

update tel_new, tel_old set prim='true' where tel_new.tel=tel_old.telefon;


А зачем у prim тип данных varchar(100), если эта колонка содержит true/false ?

Неактивен

 

#3 17.02.2012 21:23:01

Marabuzo
Участник
Зарегистрирован: 17.02.2012
Сообщений: 4

Re: Проверка элементов 2-х таблиц на совпадение

А зачем у prim тип данных varchar(100), если эта колонка содержит true/false ?

Да так первое, что в голову пришло smile Можно думаю и TINYTEXT или Для  true/false отведен в Mysql свой спец. тип колонки?

Неактивен

 

#4 17.02.2012 21:24:48

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2422

Re: Проверка элементов 2-х таблиц на совпадение

Да, называется boolean.
Кстати, подозреваю, что если добавить индексы на поля tel_new.tel и tel_old.telefon, то запрос может проходить быстрее, чем если без них.

Отредактированно deadka (17.02.2012 21:25:58)


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#5 17.02.2012 22:07:32

Marabuzo
Участник
Зарегистрирован: 17.02.2012
Сообщений: 4

Re: Проверка элементов 2-х таблиц на совпадение

deadka написал:

..если добавить индексы на поля tel_new.tel и tel_old.telefon, то запрос может проходить быстрее, чем если без них.

Т.е. создать еще один столбец в каждой таблице с типом  с типом INT и авто заполнением  AUTO_INCREMENT?

Отредактированно Marabuzo (17.02.2012 22:11:10)

Неактивен

 

#6 18.02.2012 00:05:48

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2422

Re: Проверка элементов 2-х таблиц на совпадение

Скорее выполнить такого толка запросы: CREATE INDEX tel_index ON tel_new (tel(255));


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#7 19.02.2012 22:04:16

Marabuzo
Участник
Зарегистрирован: 17.02.2012
Сообщений: 4

Re: Проверка элементов 2-х таблиц на совпадение

Спасибо! Доли секунды и проверка готова, програмный код сократился до двух строк! big_smile

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson