MySQL为什么记录为慢速查询/日志查询而不使用索引?

MySQL为什么记录为慢速查询/日志查询而不使用索引?,mysql,sql,performance,indexing,myisam,Mysql,Sql,Performance,Indexing,Myisam,Mysql 5.1.x 在my.cnf中: log-queries-not-using-indexes = 1 long_query_time = 30 and slow queries are logged 为什么我在log上显示这个?速度不慢,所有字段都已编制索引 从mysql.slow.log: # Query_time: 0.001492 Lock_time: 0.000031 Rows_sent: 229 Rows_examined: 458 use database1; SET

Mysql 5.1.x

在my.cnf中:

log-queries-not-using-indexes = 1
long_query_time = 30
and slow queries are logged
为什么我在log上显示这个?速度不慢,所有字段都已编制索引

从mysql.slow.log:

# Query_time: 0.001492  Lock_time: 0.000031 Rows_sent: 229  Rows_examined: 458
use database1;
SET timestamp=1393342939;
SELECT id,name FROM database1 ORDER BY name ASC;
这个表有229行,MYISAM

id and name are indexed
id = auto increment int unsigned
name = varchar(255) utf-8

你能解释一下为什么我在非索引/慢速查询日志中显示这个吗

摘要和更多信息:

MYISAM表,229行,更多列,但全部,229需要id和名称列。两者都有索引。At查询需要显示所有229行

我想要两样东西:

  • 1.:在慢速查询时不显示该查询/不使用索引日志。
  • 2.:尽快进行查询。

谢谢。

您正在对表进行文字完整扫描,因为您没有可用于索引的WHERE谓词。

“为什么我在未索引/慢速查询日志中显示此内容”-慢速查询日志不是关于不使用索引的查询,而是关于执行缓慢的查询。PS:对于给定的查询和数据集大小,我看不到任何有用的索引。查询时间比配置中少3000倍。这很奇怪,不!索引的一般思想是能够更快地找到表的子集,而不必为给定条件的数量计算每一行。id>0假设id始终为正值,也会给您一个完整的扫描(因为从概念上讲,您正在从表中提取每条记录)。在这样一个查询中,您无法进行任何优化,我怀疑您从该执行中获得的时间不到1.5ms。例如,如果您在该表中有100行,并且您希望使用id=1的行,则索引将是有意义的。此时,您需要在id字段上创建和索引,并且您的解释计划将反映索引的使用情况。a)使用该表的查询永远不会使用索引。即使暗示查询使用索引,也肯定会适得其反。b)关于记录的内容,请查看以下内容:,检查设置:--不使用索引的日志查询,不,如果您确实成功完成了您试图完成的任务,它实际上会更慢。“完整扫描不是坏事,索引不是好事”。