|
|
|
| Просто теоретический вопрос... В табличке - тысяча строк. $word - встречается в столбце word - только один раз. То есть, WHERE word='$word' - вернет только одну строку.
Есть ли разница в нагрузке или скорости, между:
SELECT * FROM tbl WHERE word='$word'
и
SELECT * FROM tbl WHERE word='$word' LIMIT 1
? | |
|
|
|
|
|
|
|
для: Shorr Kan
(12.08.2006 в 01:41)
| | Разницы нет. | |
|
|
|
|
|
|
|
для: cheops
(12.08.2006 в 02:54)
| | Спасибо. | |
|
|
|
|
|
|
|
для: Shorr Kan
(12.08.2006 в 05:43)
| | если тысяча строк то разницы нет потому что тысяча строк это почти пусто.
а вот если больше
<?
for ($i = 0; $i < 100000000000;)
{
mysql_query("INSERT INTO test1 (id, word) VALUES (" . $i . ", " . rand(0, 5000000000000000000) . ")") or die (mysql_error());
$i++;
}
?>
|
этот запрос делался нескажу сколько, но в конце я его остановил. последний id в таблице был 5119317.
далее запрос (через phpmyadmin)
SELECT *
FROM 'test1'
WHERE word =297259680
LIMIT 0 , 30
делался 1.4857 сек
|
а если LIMIT 1 то 0.0100 сек.
или база будет перебирать всю таблицу или база будет перебирать таблицу до первого нужного значения. разница есть.
а если значения в базе вобще отсутствует, то перебор занял 7.8833 сек.
далее
SELECT * FROM 'test1' WHERE id = 1 LIMIT 1
Запрос занял 0.0004 сек
|
SELECT *
FROM 'test1'
WHERE id =1
LIMIT 0 , 30
Запрос занял 6.8761 сек
|
SELECT *
FROM 'test1'
WHERE id =5119317 // последний id в базе
LIMIT 0 , 30
Запрос занял 6.8700 сек
|
SELECT *
FROM 'test1'
WHERE id =5119317
LIMIT 1
Запрос занял 6.9733 сек
|
| |
|
|
|
|
|
|
|
для: RV
(12.08.2006 в 07:14)
| | Очень интересно, спасибо. Это именно то, что я искал. | |
|
|
|
|
|
|
|
для: Shorr Kan
(12.08.2006 в 13:24)
| | вот как у меня организован запрос:
$banner = mysql_query("SELECT `id`, `title`, `text`, `block_id`, `date`, `image`, `text_sokr`,
`client_id`, `kol_klzak`, `kol_kl`, `kol_pokzak`, `kol_pok`, `data_full`, `published`, `polojenie`, `url`
FROM `cms_banner_title` WHERE `published`='Y' AND `polojenie` = '4'
ORDER BY rand() LIMIT 10");
$row = mysql_fetch_array($banner, MYSQL_NUM);
|
вывожу так:
echo '<a href="index.php?option=banner&func=shadowxak&refer='.$row[0].'" target="_blank"><img src="'.$imageurl.'" alt="'.$row[1].'" border="0"/></a></br><p></p>';
|
где $imageurl - путь до банера! По логике если посмотреть запрос то должно 10 различных баннеров выводиться на странице, а выводиться только 1 который первый поймался. Также необходимо если в бд менее 10 соответствующих условий, то выводиться должны все что есть, но случайность выведения объязательна!
где что я пропустил? выводиться только первая попавшияся запись :(
Плиз помогите... | |
|
|
|
|
|
|
|
для: ShadowXak
(01.12.2006 в 18:56)
| | Ответ получен чуть выше ... | |
|
|
|