|
|
|
|
|
для: Trianon
(05.07.2006 в 18:39)
| | Понял,спасибо.Первичный ключ я не создал,вседа думал что это индекс ,индексировал,но видимо не сростается. | |
|
|
|
|
|
|
|
для: hars
(05.07.2006 в 18:27)
| | Вам нужно добиться другого способа сопоставления записей.
Например, создать в таблице face еще один столбец с хешем этого самого fio.
Или в другой таблице, если эту стрёмно трогать. В конце концов, есть у нее первичный ключ?
Иначе можно долго так наблюдать MySQLом. Долго и безуспешно. | |
|
|
|
|
|
|
|
для: cheops
(05.07.2006 в 16:46)
| | У меня такой вопросик,когда я ставлю условие обновить строки 17<1fizik_face.sis_fz<19,то комп почемуто особо не загружается и похоже вообще ничего не делает,но память под процесс mysqld-nt постоянно растёт,до максимальной отметки в my.ini,странно то что загрузка проца 6-10%,а когда 1fizik_face.sis_fz=18,то сразу заметно :),что процесс пощёл,время его выполнения 33сек.
UPDATE 1fizik_face,face
SET 1fizik_face.vod_udost=concat(face.ser_vd," ",num_vd),
1fizik_face.dat_vyd_vod=face.dat_vyd
where 17<1fizik_face.sis_fz<19
and 1fizik_face.fio=CONCAT(face.fam,",",face.name,",",face.otch)
and locate(face.dat_rozhd,1fizik_face. data_rozhd,5)>0;
|
только что пробовал,до сих пор висит,прошло 3 минуты уже | |
|
|
|
|
|
|
|
для: cheops
(05.07.2006 в 16:44)
| | Спасибо !Сейчас сделаю,памяти к сожалению всего 384 метра.Таблицы MyISAM | |
|
|
|
|
|
|
|
для: hars
(05.07.2006 в 15:28)
| | Ещё можно выставить значение
Можно и больше... | |
|
|
|
|
|
|
|
для: hars
(05.07.2006 в 15:28)
| | 1) Хм... а у вас тип таблиц InnoDB? Если измените на MyISAM будет работать быстрее (возможно даже в несколько раз).
2) Сколько вам можно оттяпать оперативной памяти, т.е. сколько её всего на машине?
3) Чем дольше будет работать скрипт, тем быстрее будет идти дело, так как индексы будут подгружаться в кэш оперативной памяти, его конечно лучше сделать побольше
4) Вот это
очень мало, сделайте хотя бы 64М.
5) Вот это тоже не очень много (или оперативной памяти мало у машины)
сюда бы 3/4 оперативной памяти машины нужно... | |
|
|
|
|
 657 байт |
|
|
для: cheops
(05.07.2006 в 14:10)
| | Вот мой my.ini,теперь всё перенёс на MySQL5
Все поля учавствующие в условии проиндексированы,не уникальны.
В таблице face 3 500 000 записей,обьём 400 мегабайт.
Вот точный запрос,что и куда внести в эти большие базы
UPDATE 1fizik_face,face
SET 1fizik_face.vod_udost=concat(face.ser_vd," ",num_vd),
1fizik_face.dat_vyd_vod=face.dat_vyd
where 1fizik_face.sis_fz<10
and 1fizik_face.fio=CONCAT(face.fam,",",face.name,",",face.otch)
and locate(face.dat_rozhd,1fizik_face. data_rozhd,5)>0;
|
В принципе скрипт заработал,я поставил ограничение на 10 записей в обновляемой таблице и он работал 5минут 51 секунду.Обновил три записи . | |
|
|
|
|
|
|
|
для: hars
(05.07.2006 в 11:36)
| | Хм... можно попробовать, у вас сейчас что в my.ini? | |
|
|
|
|
|
|
|
для: hars
(05.07.2006 в 10:48)
| | Немного поправил запрос,но время опять же 4.32 (минут),хотя обновлние вносил в таблицу где всего 5 записей ,а мне надо сделать тоже самое,только там их 10 миллионов.
UPDATE tests,face SET
tests.name1=concat(face.ser_vd," ",num_vd),
tests.name2=face.dat_vyd
where tests.fio=CONCAT(face.fam,",",face.name,",",face.otch) and locate(tests.n1,face.dat_rozhd,1)>0;
|
Может,в my.ini что-то надо прописать?(таблицы MyISAM) | |
|
|
|
|
|
|
|
для: cheops
(05.07.2006 в 10:38)
| | face.fam,face.name,face.otch тип varchar ,т.к. места маловато ,
проиндексированы ,не уникальны,длина 15 | |
|
|
|
|