基本上我正在处理一个大表(150M行),因此索引非常重要,但它基本上是一个包含几个可搜索的不同字段的表。因此,查询列的方式可能有100种不同的变化,因此为每种不同的变体创建索引是不现实的。
所以要解释一下:有时列可能会出现在查询中,有时则不会。对于几个不同的列,情况也是如此。
答案 0 :(得分:2)
无论表格有多复杂,对于大多数查询,可能会有几个关键列几乎总是在您的查询中使用。只需索引那些。行扫描听起来是不可避免的,但是如果你已经为关键列编制索引,那么MySQL就足够聪明,可以使用索引来缩小要自动扫描的潜在行。
答案 1 :(得分:0)
只有解决方案几乎是每个表一个索引,然后让优化器对其进行排序(即决定使用哪个索引)。什么数据库,什么是“相当大的表”给你? 1亿行? 10亿行?