Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Такой запрос / 2 сообщений из 2, страница 1 из 1
29.09.2005, 20:32:24
    #33297054
Вот...
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Такой запрос
Если кому не лень разбираться...
Есть таблицы:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
CREATE TABLE `film` (
`kod` int( 12 ) NOT NULL auto_increment,
`film_name` varchar( 255 ) NOT NULL default '',
`description` text,
PRIMARY KEY (`kod`),
) TYPE=MyISAM COMMENT='Movies details'

CREATE TABLE `starring` (
`kod` bigint( 20 ) unsigned NOT NULL auto_increment,
`film_kod` int( 12 ) NOT NULL default '0',
`role` char( 1 ) NOT NULL default '',
`starname_kod` int( 12 ) NOT NULL default '0',
PRIMARY KEY (`kod`),
) TYPE=MyISAM COMMENT=' Movies and actors (role is ‘a’) and directors (role is ‘d’)
relations';

CREATE TABLE `users_prefer` (
`id` int( 10 ) unsigned NOT NULL auto_increment,
`uid` int( 12 ) NOT NULL default '0',
`value_type` enum('actor','director') NOT NULL default 'actor',
`value_code` int( 12 ) NOT NULL default '0',
`value` int( 11 ) NOT NULL default '0',
PRIMARY KEY (`id`)
) TYPE=MyISAM COMMENT='Users prefers';

Number of the records at the tables:
films -  50000 
starring -  100000 
users_prefer -  50000 

И собственно сам вопрос на сколько будет эффективен такой запрос:

Код: plaintext
1.
2.
3.
4.
5.
6.
	SELECT film_name,SUM(a.value) as ord
    FROM users_prefer AS a
    LEFT JOIN starring AS b ON b.starname_kod = a.value_code
    LEFT JOIN film AS c ON c.kod = b.film_kod
    WHERE a.uid="тут должен быть идентификатор пользователя"
    AND ((a.value_type = 'actor' AND b.role='a') OR (a.value_type = 'director' AND b.role='d'))
    GROUP BY b.film_kod ORDER BY ord DESC

Стоит ли его разбивать на несколько запросов? Ну и в догонку общий вопрос на сколько оправданно использовать LEFT JOIN в запросах для которых критична скорость выполнения.
...
Рейтинг: 0 / 0
30.09.2005, 16:03:42
    #33298951
Валентин К
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Такой запрос
на сколько эффективным будет запрос - посмотри в плане выполнения EXPLAIN (перед селектом).
LEFT JOIN оправдан для использования в быстрых запросах.
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Такой запрос / 2 сообщений из 2, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]