我们有一个多租户应用程序,它有一个包含 129 个字段的表,这些字段都可以在 WHERE 和 ORDER BY 子句中使用。我现在花了 5 天的时间试图找出最适合我们的索引策略,我获得了很多知识,但我仍然有一些问题。
1)在创建索引时,我是否应该首先将其设为一个带有tenant_id 的复合索引?(所有查询都有tenant_id = ?在WHERE 子句中)
2) 由于所有列都可以在 WHERE 子句和 order by 子句中使用,我应该对它们都创建索引吗?(知道当我按没有索引的列排序时,与拥有约 1,500,000 行的租户一起执行需要 6 秒)
3)制作PK(tenant_id,ID),但这不会影响到该表的连接吗?
任何有关如何处理此问题的建议将不胜感激。
====== 数据库引擎是 InnoDB
=======
结构体 :
ID bigint(20) auto_increment primary
tenant_id int(11)
created_by int(11)
created_on Timestamp
updated_by int(11)
updated_on Timestamp
owner_id int(11)
first_name VARCHAR(60)
last_name VARCHAR(60)
.
.
.
(some 120 other columns that are all searchable)