|
|
|
| Каким самым оптимальным способом можно проверить есть ли данная запись в БД ?
Допустим есть у нас БД в которой 20000 записей, я делаю проверку так
$title="Тут текст";
mysql_query ("SELECT news_title FROM news WHERE news_title='$title'", $dbi);
$total=0;
while(list($news_title)= mysql_fetch_row($res))
{
if (strcmp($news_title, $title)==0) {$total=1;}
}
|
Тоесть если $total==0; тогда такой новости нет в БД | |
|
|
|
|
|
|
|
для: dima_s_d_s
(12.07.2007 в 18:19)
| |
$query = mysql_query(........);
if(mysql_num_rows($query)>0)
// така строка есть
|
| |
|
|
|
|
|
|
|
для: dima_s_d_s
(12.07.2007 в 18:19)
| | Можно воспользоваться следующим решением
<?php
$title="Тут текст";
$cnt = mysql_query ("SELECT COUNT(*) FROM news WHERE news_title='$title'", $dbi);
if(!$cnt) exit(mysql_error());
if(mysql_result($cnt, 0)) echo "Запись имеется";
else echo "Записи нет";
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(13.07.2007 в 11:00)
| | Ещё можно написать так:
<?php
$title="Тут текст";
$cnt = mysql_query ("SELECT 1 FROM news WHERE news_title='$title' LIMIT 1", $dbi);
if(!$cnt) exit(mysql_error());
if(mysql_num_rows($cnt)) echo "Запись имеется";
else echo "Записи нет";
?>
|
Почти тоже самое но в этом случае если он найдет хотя бы одну запись то не будет искать дальше. В случае с COUNT он просмотрит всю таблицу до конца. Если данных много то работать будет на порядок быстрее | |
|
|
|
|
|
|
|
для: Евгений Петров
(14.07.2007 в 13:42)
| |
SELECT COUNT(1) FROM news WHERE news_title='$title';
|
| |
|
|
|
|
|
|
|
для: oradev
(14.07.2007 в 16:54)
| | COUNT(*) | |
|
|
|
|
|
|
|
для: Unkind
(14.07.2007 в 18:26)
| | COUNT(*) - не есть гуд, лучше COUNT(1)
Насколько я помню это ANSI/SQL | |
|
|
|
|
|
|
|
|
для: Unkind
(14.07.2007 в 20:57)
| | Всем спасибо за помощь | |
|
|
|
|
|
|
|
для: Евгений Петров
(14.07.2007 в 13:42)
| | Если уж пытаться оптимизировать запрос, то делать это до конца.
$sql = "SELECT ( COUNT(*) > 0 ) AS present FROM news WHERE news_title='$title'";
|
| |
|
|
|