我有一个查询,通过类别获取行。 示例查询是
防爆。 select*从数据库的类别= 14
任何人有一个想法或build议如何优化这个查询可以运行得更快?
那么你有一个非常简单的查询,因为它是。 你可以通过select较less的字段来加速它,你是否真的需要该行中的所有字段,或者只需要某些字段。 您还可以确保您在类别字段上有一个索引。
要做的最重要的事情就是确保你在cateogry
列上有一个索引。 通过EXPLAIN
运行查询来查看它是否使用查询:
root@localhost:temp> explain select * from db where category = 14 \G *************************** 1. row *************************** id: 1 select_type: SIMPLE table: db type: ALL possible_keys: NULL key: NULL key_len: NULL ref: NULL rows: 2 Extra: Using where
“使用where”意味着它正在执行全表扫描,其中它将每行中的category列的值与14进行比较。如果有索引,mysql可以直接跳转到适当的行。
root@localhost:temp> alter table db add index c1 (category); root@localhost:temp> explain select * from db where category = 14\G *************************** 1. row *************************** id: 1 select_type: SIMPLE table: db type: system possible_keys: category key: NULL key_len: NULL ref: NULL rows: 1 Extra:
请注意“possible_keys”字段,并且“Extra”是空的。
指标非常重要。 没有索引的模式要么非常专业,要么只做了一半。 你应该看看所有的索引mysql的东西 ,真正感受到他们是多么的重要。