powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Вторая таблица в JOIN выбирается полностью
2 сообщений из 2, страница 1 из 1
Вторая таблица в JOIN выбирается полностью
    #38915516
Mermpheriulus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: sql
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.
SELECT 
  c0_.cust_id AS cust_id0, 
  c0_.cust_status AS cust_status1, 
  c0_.cust_name AS cust_name2, 
  c0_.cust_type AS cust_type3, 
  c0_.pay_type AS pay_type4, 
  c0_.pay_days AS pay_days5, 
  c0_.head_office AS head_office6, 
  c0_.cust_is_incoming AS cust_is_incoming7, 
  c0_.cust_notification_lang AS cust_notification_lang8, 
  c1_.cust_id AS cust_id9, 
  c1_.co_expire AS co_expire10, 
  c1_.co_comment AS co_comment19, 
  c1_.country_id AS country_id21 
FROM 
   cust c0_ 
   INNER JOIN co c1_ ON c0_.cust_id = c1_.cust_id 
WHERE 
  (
    c0_.cust_status = 0 
    AND c0_.cust_type < 3
  ) 
  OR c0_.cust_id = 1 
ORDER BY 
  c0_.cust_name ASC;


При этом запросе вторая таблица выбирается полностью, на не очень быстрой тестовой машине это занимает 2 секунды.
Можно ли как то оптимизировать выборку ?
результат explain:
Код: sql
1.
2.
3.
4.
5.
6.
7.
+----+-------------+-------+--------+-----------------------------+---------+---------+------------------+--------+---------------------------------+
| id | select_type | table | type   | possible_keys               | key     | key_len | ref              |   rows | Extra                           |
+----+-------------+-------+--------+-----------------------------+---------+---------+------------------+--------+---------------------------------+
|  1 | SIMPLE      | c1_   | ALL    | PRIMARY                     | NULL    | NULL    | NULL             | 882231 | Using temporary; Using filesort |
|  1 | SIMPLE      | c0_   | eq_ref | PRIMARY,IDX_997B25A3DBD6375 | PRIMARY | 4       | trol.c1_.cust_id |      1 | Using where                     |
+----+-------------+-------+--------+-----------------------------+---------+---------+------------------+--------+---------------------------------+
2 rows in set



Таблица cust:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
CREATE TABLE `cust` (
  `cust_id` int(11) NOT NULL AUTO_INCREMENT,
  `cust_status` int(11) NOT NULL,
  `cust_name` varchar(30) NOT NULL,
  `cust_type` smallint(6) NOT NULL,
  `pay_type` smallint(6) NOT NULL,
  `pay_days` smallint(6) NOT NULL,
  `cust_contr` tinyint(1) NOT NULL,
  `head_office` smallint(6) NOT NULL,
  `cust_is_incoming` tinyint(1) NOT NULL,
  `cust_notification_lang` smallint(6) NOT NULL,
  PRIMARY KEY (`cust_id`),
  KEY `IDX_997B25AEF404A5A` (`cust_name`) USING BTREE,
  KEY `IDX_997B25A3DBD6375` (`cust_type`) USING BTREE
) ENGINE=InnoDB 



Таблица co:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
CREATE TABLE `co` (
  `cust_id` int(11) NOT NULL,
  `co_expire` date DEFAULT NULL,
  `co_credit` int(11) NOT NULL,
  `country_id` smallint(6) DEFAULT NULL,
  `co_date` int(10) unsigned NOT NULL DEFAULT '0',
  `co_comment` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`cust_id`),
  KEY `co_expire` (`co_expire`) USING BTREE,
  KEY `IDX_D2045652F92F3E70` (`country_id`),
  CONSTRAINT `FK_D2045652BFF2A482` FOREIGN KEY (`cust_id`) REFERENCES `cust` (`cust_id`)
) ENGINE=InnoDB DEFAULT 
...
Рейтинг: 0 / 0
Вторая таблица в JOIN выбирается полностью
    #38915621
Фотография ScareCrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
a если на union переписать?
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Вторая таблица в JOIN выбирается полностью
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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