тормозит запрос

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