powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Такой запрос
2 сообщений из 2, страница 1 из 1
Такой запрос
    #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
Такой запрос
    #33298951
Фотография Валентин К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
на сколько эффективным будет запрос - посмотри в плане выполнения EXPLAIN (перед селектом).
LEFT JOIN оправдан для использования в быстрых запросах.
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Такой запрос
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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