[MDEV-20491] Select Join Created: 2019-09-04  Updated: 2019-10-14

Status: Open
Project: MariaDB Server
Component/s: OTHER
Affects Version/s: 10.2.26
Fix Version/s: 10.2

Type: Bug Priority: Major
Reporter: Sergii Volikov Assignee: Igor Babaev
Resolution: Unresolved Votes: 0
Labels: None
Environment:

OS Windows Server 2012 R2 x64


Attachments: PNG File Plan 2.png     PNG File plan 1.png     File test.sql    

 Description   

Добрый день!
Прошу помощи!
Есть запрос

SELECT
  s.id, s.TId, t.id kid
FROM 
(SELECT
  seq id,
  zb_GetTrackId(CONCAT('http://site.com/maps/?l=1&v=1&id=', seq)) TId
FROM seq_1_to_100 s) s
  JOIN tracks t ON t.id = s.id;

Он выполняется за миллисекунды.
Но если его изменить JOIN tracks t ON t.id = s.TId
То он уже выполняется на несколько порядков больше 70-80 сек. Почему так????
Функция zb_GetTrackId возвращает ID из URL если он есть в таблице tracks.

Результат выполнения запроса в обоих случаях одинаков:
id BIGINT(20), TId INT(11), kid INT(11)
1 1 1
34 34 34
42 42 42
44 44 44
47 47 47
48 48 48
53 53 53
60 60 60
69 69 69
70 70 70
71 71 71
72 72 72
73 73 73
74 74 74
75 75 75
76 76 76

План запроса в первом случае см. рис. Plan 1.png
Во втором см. рис. Plan 2.png

Почему не используется PRIMARY, а используется индекс IDX_tracks_Department_id?
Таблица
CREATE TABLE tracks (
id int(11) NOT NULL AUTO_INCREMENT,
Department_id int(11) NOT NULL,
Name varchar(50) NOT NULL,
Parent_id int(11) DEFAULT NULL,
Nagr_id bigint(20) DEFAULT NULL,
CorrDate datetime NOT NULL,
UserName varchar(50) NOT NULL,
PRIMARY KEY (id)
)
ENGINE = INNODB,
AUTO_INCREMENT = 27308,
AVG_ROW_LENGTH = 862,
CHARACTER SET utf8,
COLLATE utf8_unicode_ci;

ALTER TABLE tracks
ADD INDEX IDX_tracks_Department_id (Department_id);

ALTER TABLE tracks
ADD CONSTRAINT FK_tracks_department_Id FOREIGN KEY (Department_id)
REFERENCES department (Id);

ALTER TABLE tracks
ADD CONSTRAINT FK_tracks_tracks_id FOREIGN KEY (Parent_id)
REFERENCES tracks (id) ON DELETE CASCADE ON UPDATE CASCADE;



 Comments   
Comment by Sergii Volikov [ 2019-09-06 ]

Во вложении скрипты для воспроизведении проблемы.
test.sql

Generated at Thu Feb 08 08:59:52 UTC 2024 using Jira 8.20.16#820016-sha1:9d11dbea5f4be3d4cc21f03a88dd11d8c8687422.