我有表A和B,其中A在(X,Y)上有一个PRIMARY键,在'id'列上有另一个键; B在(X,Y,Z)上有一个PRIMARY键。对于两个表,X,Y和Z都是相同的类型; A.id是一个整数。
我想运行以下查询:
+----+-------------+-------+--------+------------------+---------+---------+--------------+----------+-------------+
| id | select_type | table | type | possible_key | key | key_len | ref | rows | Extra |
+----+-------------+-------+--------+------------------+---------+---------+--------------+----------+-------------+
| 1 | SIMPLE | B | ALL | PRIMARY | NULL | NULL | NULL | 10659636 | |
| 1 | SIMPLE | A | eq_ref | PRIMARY,id | PRIMARY | 8 | db.A.X,db.A.Y| 1 | Using where |
+----+-------------+-------+--------+------------------+---------+---------+--------------+----------+-------------+
但是,此选择的EXPLAIN表示虽然主键用于A,但它不用于B,因此将搜索~10M行。
spconv -if raw -of wav xxx.al xxx.wav
如何优化此查询以使用A和B的主键?