在这里,我想在 tracking_no 上加入以下表格,如下所示
SELECT *
FROM tracker_mngr AS pkgdsp
LEFT JOIN tracker AS taq ON taq.tracking_no LIKE CONCAT('%', pkgdsp.tracking_no ,'%')
但是执行查询需要更多时间,以下是表结构
表结构:
CREATE TABLE `tracker_mngr` (
`id_package_dispatching` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
`tracking_no` VARCHAR(50) DEFAULT NULL,
PRIMARY KEY (`id_package_dispatching`),
) ENGINE=INNODB DEFAULT CHARSET=utf8;
CREATE TABLE `tracker` (
`tracking_no` VARCHAR(50) NOT NULL DEFAULT '',
`status` VARCHAR(100) NOT NULL DEFAULT '',
`status_input_date` VARCHAR(15) NOT NULL DEFAULT '',
`status_input_time` VARCHAR(4) NOT NULL DEFAULT '',
PRIMARY KEY (`tracking_no`,`status`,`status_input_date`,`status_input_time`),
UNIQUE KEY `idx_tracking_no_status_01` (`tracking_no`,`status`,`status_input_date`,`status_input_time`),
KEY `idx_tracking_no_01` (`tracking_no`)
)ENGINE=INNODB DEFAULT CHARSET=utf8;
但我没有权限在 tracker_mngr 表上创建索引,以下是表 tracker_mngr 中的 tracking_no 示例包含 tracking_no 为
tracking_no A113035604231A A113035604220A-1 113036092514 113036092433-1
和跟踪器包含 tracking_no 作为
tracking_no 113035604231 (A113035604231A) 113035604220 (A113035604220A-1) 113036092514 (113036092514) 113036092433 (113036092433-1)
这是我的查询的解释命令表
+----+-------------+--------+------+---------------+------+---------+------+--------+-------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+--------+------+---------------+------+---------+------+--------+-------+
| 1 | SIMPLE | pkgdsp | ALL | NULL | NULL | NULL | NULL | 127362 | |
| 1 | SIMPLE | taq | ALL | NULL | NULL | NULL | NULL | 79766 | |
+----+-------------+--------+------+---------------+------+---------+------+--------+-------+
但它需要更多的时间来执行,我已经在上面创建了索引,但它没有使用任何索引进行搜索,如上表所示。那么我怎样才能提高这个查询的性能呢?