Здравствуйте! Подскажите какой тип данных наиболее подходящий будет для чисел с 22 знаками? Код (Text): 1234567891234567891234 Заранее благодарен
Операция с числами осуществляется через сторонний скрипт или с помощью SQL-запросов? Мне кажется, что это не более, чем какое-то случайное число, с которым не производится никаких математических действий, поэтому самое подходящее - поле CHAR(22) или VARCHAR (при наличии в таблице подобного типа данных).
Смотря что это за данные. Если это числа, с которыми надо проводить математические операции, то посмотреть в сторону DECIMAL Если это какой нибудь карточный код или инвентарный номер, то VARCHAR/CHAR
это первичный ключ, и по нему будет вестись поиск [sql]UPDATE ... WHERE `key` = ...[/sql] и эта операция выполняется при типе VARCHAR 2-6 сек. Думал сократить время, подобрав более подходящий тип, но видать нужно искать что-то другое...
сколько полей в таблице? сколько записей в таблице? Для UPDATE индексы замедляют работу. Это между прочим.
суть в следующем: нужно добавлять данные в таблицу и при совпадении ключа обновить эту строку Код (Text): mysql_query("INSERT INTO table VALUES()"); if (preg_match("/.*Duplicate\sentry.+/i", mysql_error())) { mysql_query("UPDATE table SET `fld` = ".$fld.", `fld2`='".$fld."' WHERE `key`=".$id." LIMIT 1"); }
Ну это уникальное поле, которое генерируется с нескольких остальных той же таблицы, сделано для поиска идентичных полей при вставке допустим данные: [sql] P D E F G L K key 12556 15 19988 123356 12 48 456 1998812335612 [/sql] key - это соединенные поля E F G и является первичным ключом таким образом при вставке строки у которых поля EFG будут такими же, mysql_error() будет писать ошибку Duclicate entry... и соответственно обновляем это поле установив обновленные значения, допустим полей P и D.[/sql]
Penegan Ускорить процесс поможет тюнинг сервера БД. Плюс если данные нужны все же не все сразу, то партиционирование еще даст прирост в скорости. Ну и стандартный master-slave, где запись только на master, а чтения со slave'ов Пока же у меня таблица обновляется по ключу, посмотрю что с запросами происходит.
Penegan а, что нельзя уникальный ключ сделать, а праймари оставить обычным автоинкриментным полем. + сделать индекс для поиска по трём плям и всё залетает
он будет сам в ставлять key, это будет быстрей чем вставлять запросом, если на key будет висеть укикальный. Тогда получиться один индекс и уник на кее, но он не будет праймари
понято, спасибо, будем пробовать варианты и еще вопрос, по обычному примари (с типом INT) будет быстрее выполнятся запрос?
и еще не будет ли быстрее сначала удалить строку и потом вставить новую, чем обновление полей в той же?
перефразирую будет ли запрос [sql] UPDATE table SET ... WHERE key = 12345 [/sql] выполнятся быстрее, если тип данных поля key будет не CHAR, а INT?
Penegan теоретически да, но я не уверен, максимум одинаково, только хватит ли тебе диапазона инта для таких чисел