I've during my MySQL database both of these tables:

CREATE TABLE IF NOT EXISTS `articles` (
  `id` bigint(20) NOT NULL,
  `url` varchar(255) collate utf8_bin NOT NULL,
  `img` varchar(255) collate utf8_bin NOT NULL,
  `name` varchar(255) character set utf8 collate utf8_unicode_ci NOT NULL,
  `url_key` varchar(255) character set utf8 collate utf8_unicode_ci NOT NULL,
  `type_code` varchar(255) character set utf8 collate utf8_unicode_ci NOT NULL,
  `likes_count` int(11) NOT NULL,
  PRIMARY KEY  (`id`),
  KEY `type` (`type`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

CREATE TABLE IF NOT EXISTS `articles_types` (
  `id` int(11) NOT NULL auto_increment,
  `code` varchar(255) character set utf8 collate utf8_unicode_ci NOT NULL,
  `url_key` varchar(255) character set utf8 collate utf8_unicode_ci NOT NULL,
  `name` varchar(255) character set utf8 collate utf8_unicode_ci NOT NULL,
  PRIMARY KEY  (`id`),
  UNIQUE KEY `name` (`code`),
  KEY `type` (`name`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COLLATE=utf8_czech_ci;

And I am attempting to run this question:

SELECT a.* FROM `articles` a INNER JOIN articles_types at ON at.`code`=a.type ORDER BY p.likes_count DESC LIMIT 1

Which returns 1 row, in 1sec.

The table articles includes aproximately over 70k rows, articles_types no more than 70 rows.

Can there be any opportunity to optimize the dwelling (maybe engine?) of this tables, or optimize the query itself to really make it faster?

You need to examine the creation of EXPLAIN in your query

It's likely an order with that will get you, so create a catalog on articles.likes_count