如何快速搜索非常大的数据库

时间:2016-09-27 19:41:08

标签: mysql sql database

我尝试通过CodeIngiter尽快在包含大约1.200.000条记录的表格上进行查询......

我在名称,标签和类别上创建了3个索引

*/

SET FOREIGN_KEY_CHECKS=0;

-- ----------------------------
-- Table structure for videos
-- ----------------------------
DROP TABLE IF EXISTS `videos`;
CREATE TABLE `videos` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) NOT NULL,
  `name_url` varchar(255) DEFAULT NULL,
  `categories` varchar(255) DEFAULT NULL,
  `embed` tinytext,
  `description` text,
  `tags` varchar(255) DEFAULT NULL,
  `hd` smallint(6) DEFAULT '0',
  `views` int(11) NOT NULL DEFAULT '0',
  `likes` int(11) DEFAULT '0',
  `dislikes` int(11) DEFAULT '0',
  `cover` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`,`name`),
  FULLTEXT KEY `mega_search` (`name`,`tags`,`categories`)
) ENGINE=MyISAM AUTO_INCREMENT=1273355 DEFAULT CHARSET=latin1;

但响应太长了=> 此查询的总执行时间7.0999

SELECT *
FROM `videos`
WHERE `categories` LIKE '%Reality%' ESCAPE '!'
ORDER BY `id` DESC
 LIMIT 20 

1 个答案:

答案 0 :(得分:1)

正如评论所提到的,您的谓词LIKE '%Reality%'无法使用常规索引进行优化。您需要使用全文搜索解决方案。

我写了一篇关于这个的演讲: