我有一个 mysql 表,其中有 900 万条记录,没有设置任何索引。我需要根据一个通用 ID 将它加入到另一个表中。我要为这个 ID 添加一个索引,但我在select和where子句中还有其他字段。
我应该为where子句 中的所有字段添加索引吗?
select子句中的字段呢?我应该为所有字段创建一个索引,还是为每个字段创建一个索引?
更新 - 添加表和查询
这里是查询——我需要根据店铺名称和店铺ID逐个项目获取销量、商品名称和商品ID(店铺名称和ID本身不唯一)
SELECT COUNT(*) as salescount, items.itemName, CONCAT(items.ID, items.productcode) as itemId
FROM items JOIN sales ON items.itemId = sales.itemId WHERE items.StoreName = ?
AND sales.storeID = ? GROUP BY items.ItemId ORDER BY salescount DESC LIMIT 10;
这是销售表:
+----------------+------------------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------------+------------------------------+------+-----+---------+-------+
| StoreId | bigint(20) unsigned | NO | | NULL | |
| ItemId | bigint(20) unsigned | NO | | NULL | |
+----------------+------------------------------+------+-----+---------+-------+
和项目表:
+--------------------+------------------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------------------+------------------------------+------+-----+---------+-------+
| ItemId | bigint(20) unsigned | NO | PRI | NULL | |
| ProductCode | bigint(20) unsigned | NO | | NULL | |
| ItemName | varchar(100) | NO | | NULL | |
| StoreName | varchar(100) | NO | PRI | NULL | |
+--------------------+------------------------------+------+-----+---------+-------+