Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |
|
select при 100.000 строк в таблице. |

10.04.2009, 16:50
|
|
Участник форума
Регистрация: 03.07.2008
Сообщений: 177
Провел на форуме: 644324
Репутация:
11
|
|
select при 100.000 строк в таблице.
Можно каким нибудь хитроумным запросом брать из такой таблицы со скоростью, как при запросе в маленькую таблицу?
|
|
|

10.04.2009, 16:56
|
|
Участник форума
Регистрация: 03.07.2008
Сообщений: 177
Провел на форуме: 644324
Репутация:
11
|
|
То есть есть большая таблица, 100.000 строк. Определенные записи запросом:
$q=mysql_fetch_array(mysql_query('SELECT * FROM '.$table.' WHERE user_id='.$g['user_id'].' LIMIT 1'));
грузятся очень долго...
|
|
|

10.04.2009, 17:16
|
|
Постоянный
Регистрация: 12.04.2007
Сообщений: 413
Провел на форуме: 3578578
Репутация:
275
|
|
таблица проиндексирована?
|
|
|

10.04.2009, 17:25
|
|
Участник форума
Регистрация: 03.07.2008
Сообщений: 177
Провел на форуме: 644324
Репутация:
11
|
|
да!
|
|
|

10.04.2009, 17:26
|
|
Reservists Of Antichat - Level 6
Регистрация: 25.04.2008
Сообщений: 827
Провел на форуме: 2769640
Репутация:
1304
|
|
Вопрос - столь ли необходимо читать все 100к записей?
И, эээ, зачем делать 100к запросов, логично что они будут тормозить.
PHP код:
$query=mysql_query('SELECT * FROM '.$table.' WHERE 1');
while ($row=mysql_fetch_array($query))
{
print_r($row);
}
|
|
|

10.04.2009, 17:31
|
|
Участник форума
Регистрация: 03.07.2008
Сообщений: 177
Провел на форуме: 644324
Репутация:
11
|
|
Так я от туда беру максимум 30 записей... но выводятся они от 5ти секунд, бывает и все 10.
хотелось бы услышать о выборке одной определенной строки..
|
|
|

10.04.2009, 17:41
|
|
Reservists Of Antichat - Level 6
Регистрация: 25.04.2008
Сообщений: 827
Провел на форуме: 2769640
Репутация:
1304
|
|
rcc0023 Вы просто пытаетесь нивелировать достоинства мускуля
PHP код:
// Сам запрос один штука
// Например выведем все строки, для user_id между 20 и 30
$query=mysql_query('SELECT * FROM '.$table.' WHERE user_id>=20 and user_id<=30');
while ($row=mysql_fetch_array($query))
{
print_r($row);
}
// А теперь строки, у которых user_id находится в списке
$query=mysql_query('SELECT * FROM '.$table.' WHERE user_id in (1,25,32,42,54)');
while ($row=mysql_fetch_array($query))
{
print_r($row);
}
Почитайте http://www.mysql.ru/docs/man/SELECT.html и что именно делает функция mysql_fetch_array
|
|
|

10.04.2009, 17:50
|
|
Познающий
Регистрация: 20.11.2008
Сообщений: 68
Провел на форуме: 108674
Репутация:
32
|
|
а какие у тебя в этой таблице есть индексы ... может они просто не используются
|
|
|

10.04.2009, 17:53
|
|
Reservists Of Antichat - Level 6
Регистрация: 22.01.2007
Сообщений: 616
Провел на форуме: 7452489
Репутация:
1359
|
|
Индексировать нужно те поля, по которым ведется поиск.
зы может это уже не мускул лагает, а сама тачка(мало опёры, слабый проц, параллельно играешь СоD4)
Последний раз редактировалось geezer.code; 10.04.2009 в 18:03..
|
|
|

10.04.2009, 18:12
|
|
Участник форума
Регистрация: 03.07.2008
Сообщений: 177
Провел на форуме: 644324
Репутация:
11
|
|
Индекс первичный... с auto_increment
вы меня запутали.... получается все правильно сделано, только вся проблема в сервере и кол-ве строк?
p.s. оперы на 1000мб, на кроне висят скрипты постоянно что то добавляющие в базу..
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|