тормозит запрос
1.
ramzes (20.01.2011 / 16:48)
собственно,
<?
$forum_post = $sql->query("SELECT forum_post.*, user.login, user.times, user.quot, user.status, user.pol FROM forum_post LEFT JOIN user ON forum_post.id_autor = user.id WHERE forum_post.id_theme = '".$theme['id']."' ORDER BY forum_post.time LIMIT ".$page.", ".$_CFG['mypage'].";");
?>
на 5к постов в теме, извлекаю 10 постов, время sql time: 0.0966
этот же запрос но в теме с 300 постами, время sql time: 0.0026
в чем может быть проблема и как исправить?
Добавлено через 07:02 сек.
сортировка по id ни чего не меняет
и еще очень нестабильное время выполнения запроса, развал до 0.5сек..
2.
COMANDOS (20.01.2011 / 17:03)
типы полей?
3.
ктулху (20.01.2011 / 17:05)
структуру таблицы копирни, индеексы есть?
4.
ramzes (20.01.2011 / 17:11)
<?
$creat_db_forum4 = $sql->query("CREATE TABLE forum_post
(id int(16) NOT NULL auto_increment,
message TEXT NOT NULL,
id_theme int(16) NOT NULL,
id_topic int(11) NOT NULL,
id_razdel int(11) NOT NULL,
file TEXT,
down int(16) DEFAULT 0,
autor TEXT NOT NULL,
id_autor int(16),
time int(12),
ip TEXT NOT NULL,
edit int(12),
edit_time TEXT,
close_file int(16),
PRIMARY KEY (id),
KEY id_theme (id_theme),
FULLTEXT KEY message(message)
) ENGINE=MyISAM DEFAULT CHARSET=utf8");
$db_user=$sql->query("CREATE TABLE user
(id int(16) NOT NULL auto_increment,
....
PRIMARY KEY(id)
) ENGINE=MyISAM DEFAULT CHARSET=utf8");
?>
5.
ramzes (20.01.2011 / 17:22)
та же большая тема но не в самом конце а в самом начале: sql time: 0.0102
6.
Александр (20.01.2011 / 17:57)
del. слепой
7.
ramzes (20.01.2011 / 18:23)
блин, че ж не так то
8.
Валерий (22.01.2011 / 20:08)
Я почему то не научился JOIN'ами пользоваться.. мне понятней другой синтаксис.
Попробуй так.. вроде бы эквиваленен, но может получится.
<?
"SELECT forum_post.*, user.login, user.times, user.quot, user.status, user.pol
FROM forum_post,user
WHERE forum_post.id_theme = '".$theme['id']."' AND user.id=forum_post.id_autor
ORDER BY forum_post.time
LIMIT ".$page.", ".$_CFG['mypage'].";"
?>
9.
ramzes (22.01.2011 / 22:19)
да тут не в запросе дело, в структуре таблицы че то я не так сделал
10.
Марсель (29.01.2011 / 12:44)
forum_post.id_theme в индекс добавь, посмтри.
11.
ramzes (29.01.2011 / 13:02)
добавил, сначала показалось что чуть быстрее, но нет, меньше чем за 0.02 запрос не выполняется а чаще за 0.06
(на странице еще 10 запросов к др таблицам, они суммарно выполняются не более чем за 0.01)
12.
Женек (29.01.2011 / 13:03)
да нормально по идее должно все быть.. Это у тебя такое время выполнения на локале?
13.
Марсель (29.01.2011 / 13:05)
Через phpmyadmin выполни запроос.. может нетак считаешь =\
14.
ramzes (29.01.2011 / 13:07)
тоже пробовал и тоже очень медленно выполняется (просто выбрал 30 записей из таблицы
15.
Марсель (01.02.2011 / 06:01)
У меня как-то запрос до 1-2сек доходил при 1млн записей где-то..
Добавил в index, выполняется за 0.00**
16.
ramzes (01.02.2011 / 06:03)
засада, но индексы по всем полям добавил (по которым выборка идет) не помогло..
пришлось закрыть тему и создать дубль
17.
ктулху (01.02.2011 / 10:08)
EXPLAIN ничего умного не показывает?
18.
ramzes (01.02.2011 / 15:55)
блин, вот что самое обломное, индексы я уже все расставил, типы полей тогда же сменил, прогонял просто через анализ таблицы и менял
на счет time не катит, по ид выборка ни чуть не быстрее, и с индексом на time ни чего не меняется...
блин может дело в сервере? хотя конечно врят ли
19.
ramzes (01.02.2011 / 16:08)
ShiftBHT_есть_чо7 (1 Февраля 2011 / 10:08)
EXPLAIN ничего умного не показывает?
sql time: 0.0019
Array ( [0] => 1 [id] => 1 [1] => SIMPLE [select_type] => SIMPLE [2] => forum_post [table] => forum_post [3] => ref [type] => ref [4] => id_theme [possible_keys] => id_theme [5] => id_theme [key] => id_theme [6] => 4 [key_len] => 4 [7] => const [ref] => const [8] => 15 [rows] => 15 [9] => Using where; Using filesort [Extra] => Using where; Using filesort )
обязательно на той теме пробывать? я на локалке на пустой теме делал
20.
ramzes (01.02.2011 / 16:51)
тормозит именно WHERE id_theme = '".$theme['id']."' и только когда выборка идет в конце темы, т.е. далеко по таблице бежать..
лефт джоин и сортировка вообще ни как не влияют на скорость, а эта дрянь с 0.004 поднимает до 0.04 (каждые 5к постов еще +0.04 к времени выполнения)
ума не приложу что делать
21.
ramzes (01.02.2011 / 17:04)
sql time: 0.007 на 10к постов
я в шоке от причины тормоза...
22.
Марсель (01.02.2011 / 17:15)
20, Мощь компа какая?)
23.
ramzes (01.02.2011 / 17:22)
2 ядра по 3000 и 4 гига оперативы
сервер в двое мощнее
не, железо не причем))
нашел там где меньше всего ожидал, тормозил ключ на forum_post.id_theme снес его и генерация упала в 10 раз))
___________
как снести KEY id_theme (id_theme)?
че то я не найду в майадмин..
24.
ramzes (01.02.2011 / 18:49)
26.
Tidus, тип давно сменил, и вместо 16 поставил 8
спасибо уже нашел как удалить, не так конечно хорошо как на компе но до 0.022 при 10000 скинул все таки
URL:
https://visavi.net/topics/17944