IMB Asked: 2019-06-23 13:26:45 +0800 CST2019-06-23 13:26:45 +0800 CST 2019-06-23 13:26:45 +0800 CST 索引每个 WHERE 列? 772 我试图打开MYSQLI_REPORT_ALL | MYSQLI_REPORT_STRICT,现在 MySQL 告诉我: 查询/准备语句中未使用索引... 在我的一些应用程序的查询中。 WHERE对我可能使用的每一列进行索引真的是最好的做法,这样 MySQL 就不会抱怨了吗?对我来说似乎有点矫枉过正,因为可能有一些列我只会WHERE偶尔使用该子句。 mysql index 1 个回答 Voted Best Answer Rick James 2019-06-23T21:42:58+08:002019-06-23T21:42:58+08:00 仅在初始开发时打开这些标志。他们太吵了,否则会误报。 不使用索引的查询也有有效的情况。 在某些情况下(例如 EAV),为每个可能的查询都建立索引是不切实际的。 我更喜欢用 的低值打开慢日志long_query_time,然后收集哪些查询是“最差的”。这是一个更好的查询列表,可以改进。它可能包括一些具有最佳索引的慢查询,并排除一些不涉及任何索引的非常快的查询。 不要盲目地索引每一列。了解“复合”索引。 请参阅我的食谱,了解为基本查询创建最佳索引。
仅在初始开发时打开这些标志。他们太吵了,否则会误报。
不使用索引的查询也有有效的情况。
在某些情况下(例如 EAV),为每个可能的查询都建立索引是不切实际的。
我更喜欢用 的低值打开慢日志
long_query_time
,然后收集哪些查询是“最差的”。这是一个更好的查询列表,可以改进。它可能包括一些具有最佳索引的慢查询,并排除一些不涉及任何索引的非常快的查询。不要盲目地索引每一列。了解“复合”索引。
请参阅我的食谱,了解为基本查询创建最佳索引。