| |
|
|
| | Вопрос: Можно ли как-то оптимизировать скорость случайной выборки из БД?
Есть 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 | |
| |
|
|