|
|
|
| Есть в базе около 500 зписей, есть поле body типа TEXT. Нужно при добавлении новой
записи проверять совпадение этого поля и если такой записи нет добавлять новую запсиь.
Пока думаю делать так:
<?php
$res = mysql_query("SELECT id FROM tab WHERE body = '$body'");
if (mysql_num_rows($res) <> 1)
{
// такой записи нет в БД, добавляем
$res = mysql_query("INSERT INTO tab VALUES('', '$body')");
}
?>
|
Количество записей возврастет и надо будет искать среди 5000, 400 новых... Можно как то
ускорить процесс ? Или есть другие алгоритмы ? | |
|
|
|
|
|
|
|
для: jonnik
(24.01.2007 в 21:36)
| | Можно проиндексировать поле body по первым символам уникальным индексом и добавлять запись при помощи оператора
<?php
mysql_query("INSERT IGNORE INTO tab VALUES('', '$body')");
?>
|
PS В этом случае вставляться будут только уникальные записи, а существующие отбрасываться. | |
|
|
|
|
|
|
|
для: cheops
(24.01.2007 в 21:40)
| | >Можно проиндексировать поле body по первым символам уникальным индексом
а это как сделать ? Использую phpMyAdmin... | |
|
|
|
|
|
|
|
для: cheops
(24.01.2007 в 21:40)
| | Вроде разобрался как добавить уникальный индекс:
ALTER TABLE `tab` ADD UNIQUE `ind_text` ( `body` ( 64 ) )
|
размер индекса 64 - допустим ? до какого размера можно делать индекс ? 32 - уникальность невозможна, уже есть совпадения... | |
|
|
|
|
|
|
|
для: JonNik
(24.01.2007 в 22:19)
| | Да, допустим, по-моему до MySQL 5.0 масимум было 500, после MySQL 5.0 - 1000. | |
|
|
|