|
|
|
| Вопрос: Можно ли как-то оптимизировать скорость случайной выборки из БД?
Есть 2 таблицы с отпарсенными RSS новостями и анекдотами.
На странице необходимо выводить случайный анекдот и новость.
Использую запрос:
$query3 = "SELECT
anek.anekdot AS anekdot,
anek.rubrika AS rubrika,
rss_news.news_id AS rss_news_id,
rss_news.rubrika AS rss_rubrika,
rss_news.title AS rss_title,
rss_news.descr AS rss_descr,
rss_news.data AS rss_data
FROM
".$table['anekdot']." AS anek,
".$table['rss_news']." as rss_news
ORDER BY RAND() LIMIT 1
";
|
В таблицах:
CREATE TABLE dir_rss_news (
news_id int(8) NOT NULL auto_increment,
rubrika varchar(70) NOT NULL default '',
title varchar(255) NOT NULL default '',
url varchar(255) NOT NULL default '',
descr text NOT NULL,
`data` varchar(20) NOT NULL default '',
PRIMARY KEY (news_id)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251;
CREATE TABLE dir_anekdot (
anek_id int(8) NOT NULL auto_increment,
anekdot text NOT NULL,
rubrika varchar(70) NOT NULL default '',
PRIMARY KEY (anek_id)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251;
|
(в первой таблице около 650 сообщений, во второй около 50) | |
|
|
|
|
|
|
|
для: ascerb
(07.01.2007 в 12:40)
| | А проблема в чём? Медленно работает? | |
|
|
|
|
|
|
|
для: cheops
(07.01.2007 в 13:42)
| | да. почти секунду | |
|
|
|
|
|
|
|
для: ascerb
(07.01.2007 в 12:40)
| | Таблицы dir_rss_news и dir_anekdot связаны между собой? | |
|
|
|
|
|
|
|
для: cheops
(07.01.2007 в 14:32)
| | нет, не связаны вроде | |
|
|
|
|
|
|
|
для: aScerb
(07.01.2007 в 14:46)
| | А почему тогда используется многотабличный запрос? Возможно два однотабличных запроса будут выполняться быстрее. | |
|
|
|
|
|
|
|
для: aScerb
(07.01.2007 в 14:46)
| | Вы строите таблицу из примерно трех с половиной десятков тысяч записей, и удивляетесь, что тормозит? | |
|
|
|
|
|
|
|
для: Trianon
(07.01.2007 в 21:41)
| | >да. почти секунду
+1 :D
1 секунда это конечно же ужасно долго :D | |
|
|
|