XMLWordPrintable

    Details

    • Type: Bug
    • Status: Open (View Workflow)
    • Priority: Major
    • Resolution: Unresolved
    • Affects Version/s: 10.2.26
    • Fix Version/s: 10.2
    • Component/s: OTHER
    • Labels:
      None
    • Environment:
      OS Windows Server 2012 R2 x64

      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;

        Attachments

        1. plan 1.png
          plan 1.png
          6 kB
        2. Plan 2.png
          Plan 2.png
          10 kB
        3. test.sql
          0.5 kB

          Activity

            People

            Assignee:
            igor Igor Babaev
            Reporter:
            Sergey_W Sergii Volikov
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Dates

              Created:
              Updated: