Задавайте вопросы, мы ответим
Вы не зашли.
Здравствуйте! Есть база данных телефонных номеров, в ней две таблицы 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)
Неактивен
http://dev.mysql.com/doc/refman/5.5/en/update.html
Неактивен
А зачем у prim тип данных varchar(100), если эта колонка содержит true/false ?
Да так первое, что в голову пришло Можно думаю и TINYTEXT или Для true/false отведен в Mysql свой спец. тип колонки?
Неактивен
Да, называется boolean.
Кстати, подозреваю, что если добавить индексы на поля tel_new.tel и tel_old.telefon, то запрос может проходить быстрее, чем если без них.
Отредактированно deadka (17.02.2012 21:25:58)
Неактивен
deadka написал:
..если добавить индексы на поля tel_new.tel и tel_old.telefon, то запрос может проходить быстрее, чем если без них.
Т.е. создать еще один столбец в каждой таблице с типом с типом INT и авто заполнением AUTO_INCREMENT?
Отредактированно Marabuzo (17.02.2012 22:11:10)
Неактивен
Скорее выполнить такого толка запросы: CREATE INDEX tel_index ON tel_new (tel(255));
Неактивен
Спасибо! Доли секунды и проверка готова, програмный код сократился до двух строк!
Неактивен