YII2 3张表查询 几十W级别的数据 目前查询时间过长,求解决方法 [ 1.0 版本 ]
表一:
CREATE TABLE `word_danci` (
`word_id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '单词id',
`catid` SMALLINT(6) UNSIGNED NOT NULL DEFAULT '0' COMMENT '所属学科',
`book_id` SMALLINT(6) UNSIGNED NOT NULL DEFAULT '0' COMMENT '词汇书id',
`name` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '单词name',
`soundmark` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '音标',
`audio` VARCHAR(255) NOT NULL DEFAULT '' COMMENT '音频',
`displayorder` SMALLINT(6) NOT NULL DEFAULT '0' COMMENT '显示顺序',
`level` TINYINT(2) NOT NULL DEFAULT '1' COMMENT '等级 1 => 1,2 => 2, 3 => 3,4 => 4,5 => 5,6 => 6,7 => 7, 8 => 8, 9 => 9, 10 =>10, 11 => 11,12 => 12',
`mnemonics` VARCHAR(500) NOT NULL DEFAULT '' COMMENT '助记法',
`prefix` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '前缀',
`prefix_explain` VARCHAR(500) NOT NULL DEFAULT '' COMMENT '前缀解释',
`etyma` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '词根',
`etyma_explain` VARCHAR(500) NOT NULL DEFAULT '' COMMENT '词根解释',
`suffix` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '后缀',
`suffix_explain` VARCHAR(500) NOT NULL DEFAULT '' COMMENT '后缀解释',
`create_time` INT(10) NOT NULL DEFAULT '0',
`update_time` INT(10) NOT NULL DEFAULT '0',
PRIMARY KEY (`word_id`),
UNIQUE INDEX `catid_bookid_name` (`catid`, `book_id`, `name`) USING BTREE,
INDEX `type` (`catid`, `book_id`),
INDEX `tag` (`catid`, `book_id`),
INDEX `name` (`name`) USING BTREE
)
COMMENT='单词表'
COLLATE='utf8_general_ci'
ENGINE=InnoDB
AUTO_INCREMENT=1
;
表二:
CREATE TABLE `word_class` (
`id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
`word_id` INT(11) NOT NULL DEFAULT '0' COMMENT '单词ID',
`class` VARCHAR(10) NOT NULL DEFAULT '' COMMENT '词性',
`ch_explain` VARCHAR(255) NOT NULL DEFAULT '' COMMENT '中文释义',
`en_explain` TEXT NOT NULL COMMENT '英文释义',
`create_time` INT(10) NOT NULL DEFAULT '0',
`update_time` INT(10) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`),
UNIQUE INDEX `word_name_class` (`word_id`, `class`) USING BTREE,
INDEX `word_name` (`word_id`) USING BTREE
)
COMMENT='词性释义表'
COLLATE='utf8_general_ci'
ENGINE=InnoDB
AUTO_INCREMENT=1
;
表三:
CREATE TABLE `word_class_tf_danci` (
`id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
`word_id` INT(11) NOT NULL DEFAULT '0' COMMENT '主单词ID',
`class` VARCHAR(10) NOT NULL DEFAULT '' COMMENT '词性',
`name` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '同反义词',
`type` TINYINT(1) NOT NULL DEFAULT '1' COMMENT '1 同义词 2 反义词',
`create_time` INT(10) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`),
UNIQUE INDEX `word_name_class_type` (`word_id`, `class`, `name`, `type`) USING BTREE,
INDEX `name` (`name`) USING BTREE,
INDEX `word_name` (`word_id`) USING BTREE
)
COMMENT='单词词性同义词反义词表'
COLLATE='utf8_general_ci'
ENGINE=InnoDB
AUTO_INCREMENT=1
;
表一为主表(2W数据),表二(5-6W数据),表三(30W数据)
表一和表二,word_id关联
表一和表三,word_id关联
现在通过表一,把表二和表三的数据需要查出来,并且要将同一个word_id的数据放在同一个数组
共 2 个回答
-
liangkaixin 回答于 2018-04-23 11:33 举报
这点数据 慢的话就是你的sql问题
疯狂丨蜗牛
注册时间:2015-09-17
最后登录:2018-12-14
在线时长:7小时59分
最后登录:2018-12-14
在线时长:7小时59分
- 粉丝1
- 金钱70
- 威望0
- 积分140