This is now a merge view because you removed order by. Sent from my iPhone
> On Jun 22, 2015, at 4:24 AM, Rhys Campbell <rhys.campb...@tradingscreen.com> > wrote: > > Hello All, > > I had an interesting problem presented to me this morning. A seemingly simple > query was running for ages and filling up /tmp causing MariaDB to crash. Now, > this isn’t perhaps the best designed database but the query didn’t seem to be > that bad. T1 is a table but t2 is a view (modified definitions provided below) > > SELECT SQL_NO_CACHE p.col1 > FROM t1 p > LEFT OUTER JOIN t2 ot > ON p.col1 = ot.col2 > LIMIT 500; > > This has the following explain plan… > > id > select_type > table > type > possible_keys > key > key_len > ref > rows > filtered > Extra > 1 > PRIMARY > P1 > index > \N > -- > 4 > \N > 85977207 > 100 > Using index; Using temporary; Using filesort > 1 > PRIMARY > p1 > ref > IX_1 > IX_1 > 8 > -- > 1 > 100 > Using where; Using index > 3 > DEPENDENT SUBQUERY > p2 > ref > IX_1 > IX_1 > 8 > -- > 1 > 100 > Using where; Using index > > To rectify this I modified an index that was use by the view (note the > key_len = 8 in above, went to 106 with the new index when EXPLAINed > separately.). I also removed the ORDER BY from the view. After this the query > performance much better returning in ~ 250 milliseconds. Removal of the ORDER > By was primarily responsible for the performance improvement. However the > EXPLAIN plan now returns this… > > id > select_type > table > type > possible_keys > key > key_len > ref > rows > filtered > Extra > 1 > PRIMARY > p > index > \N > idx > 4 > \N > 85977207 > 100 > Using index > > > Why is the view now missing from the EXPLAIN? Is this a bug or is there > something else going on here? > > Cheers, > > Rhys > > CREATE TABLE `t1` ( > `col1` BIGINT(20) NOT NULL, > `col2` ENUM(val1, val2, val3) COLLATE latin1_bin NOT NULL, > `col3` CHAR(2) CHARACTER SET latin1 NOT NULL, > `col4` INT(10) UNSIGNED DEFAULT NULL, > `col5` TINYINT(1) DEFAULT '1', > `col6` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE > CURRENT_TIMESTAMP, > `col7` VARCHAR(100) CHARACTER SET latin1 DEFAULT NULL, > `col8` VARCHAR(10) CHARACTER SET latin1 DEFAULT NULL, > `col9` VARCHAR(32) CHARACTER SET latin1 DEFAULT NULL, > `col10` VARCHAR(10) CHARACTER SET latin1 DEFAULT NULL, > `col11` VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci DEFAULT > NULL, > `col12` VARCHAR(1024) CHARACTER SET utf8 COLLATE utf8_unicode_ci DEFAULT > NULL, > `col13` DECIMAL(16,6) DEFAULT NULL, > `col14` DECIMAL(16,6) DEFAULT NULL, > `col15` BIGINT(20) DEFAULT NULL, > `col16` BIGINT(20) DEFAULT NULL, > `col17` BIGINT(20) DEFAULT NULL, > `col18` BIGINT(20) DEFAULT NULL, > `col19` CHAR(8) CHARACTER SET latin1 DEFAULT NULL, > `col20` VARCHAR(45) CHARACTER SET latin1 DEFAULT NULL, > `col21` VARCHAR(45) CHARACTER SET latin1 DEFAULT NULL, > `col22` VARCHAR(45) CHARACTER SET latin1 DEFAULT NULL, > `col23` VARCHAR(45) CHARACTER SET latin1 DEFAULT NULL, > `col24` VARCHAR(45) CHARACTER SET latin1 DEFAULT NULL, > `col25` VARCHAR(45) CHARACTER SET latin1 DEFAULT NULL, > `col26` VARCHAR(45) CHARACTER SET latin1 DEFAULT NULL, > `col27` VARCHAR(45) CHARACTER SET latin1 DEFAULT NULL, > `col28` VARCHAR(45) CHARACTER SET latin1 DEFAULT NULL, > `col29` VARCHAR(45) CHARACTER SET latin1 DEFAULT NULL, > `col30` VARCHAR(45) CHARACTER SET latin1 DEFAULT NULL, > PRIMARY KEY (`col1`), > .. /* REMOVED **/ > KEY `idx_lastupdated` (`col6`) > ) ENGINE=TokuDB DEFAULT CHARSET=latin1 COLLATE=latin1_bin > `compression`='tokudb_zlib' > > The join view has the following definition… > > SELECT > /* COLS REMOVED */ > FROM `t2` `p1` > WHERE (`p1`.`col1` = (SELECT > `p2`.`col2 ` > FROM `t2` `p2` > WHERE ((`p2`.`col2` = `p1`.`mcol2`) > AND (`p2`.`source` = 'src')) > ORDER BY `p2`.`col3` DESC > LIMIT 1)) > ORDER BY `p1`.`col2`; > > > > Rhys Campbell > Database Administrator > TradingScreen, Inc. > 23 York House, 5th Floor > London WC2B 6UJ > Email: rhys.campb...@tradingscreen.com > > Follow TradingScreen on Twitter , Facebook and our blog Trading Smarter > This message is intended only for the recipient(s) named above and may > contain confidential information. If you are not an intended recipient, you > should not review, distribute or copy this message. Please notify the sender > immediately by e-mail if you have received this message in error and delete > it from your system. > > > _______________________________________________ > Mailing list: https://launchpad.net/~maria-discuss > Post to : maria-discuss@lists.launchpad.net > Unsubscribe : https://launchpad.net/~maria-discuss > More help : https://help.launchpad.net/ListHelp
_______________________________________________ Mailing list: https://launchpad.net/~maria-discuss Post to : maria-discuss@lists.launchpad.net Unsubscribe : https://launchpad.net/~maria-discuss More help : https://help.launchpad.net/ListHelp