mysql SQL语句优化

先我有一个数据库,里面数据表aa,有4个行,id【主索引,int型】,名称1【varchar(255)】,名称2【varchar(255)】,编号【int型,主索引】
这个表中有十几万条记录,
在操作这个数据表经常会用到:
select * from aa where 编号='指定编号' ;指定编号为自己设定的数字编号
测试了一下效果,平均每次运行这个select都要花4秒,但是整个脚本程序运行一遍才花5秒.
如何提高这条语句的速度?????

还有一点就是,在电脑开机第一次运行这个语句时,这个select平均速度是2秒!!!!
这是为什么?同样是运行,为什么开机运行时会快这么多呢?

语句基本上没什么可优化的,最多就是查询条件的引号要取消,例如:
select * from aa where 编号=指定编号

你的主索引,是PRIMARY KEY吧,唯一、非空,这已经是最高级别的索引了,数据库也没有再次优化的余地

剩下可做的事情就是数据库系统优化,例如改变索引缓冲区长度(key_buffer)
  一般,该变量控制缓冲区的长度在处理索引表(读/写操作)时使用。MySQL使用手册指出该变量可以不断增加以确保索引表的最佳性能,并推荐使用与系统内存25%的大小作为该变量的值。这是MySQL十分重要的配置变量之一,如果你对优化和提高系统性能有兴趣,可以从改变 key_buffer_size变量的值开始。

如果MYISAM引擎,可以考虑使用myisamchk -r进行修复,例如:
myisamchk --sort_buffer_size=16M --key_buffer_size=16M --read_buffer_size=1M --write_buffer_size=1M -r aa
温馨提示:内容为网友见解,仅供参考
第1个回答  2014-05-04
对于这种万级别的查询,可以建立索引进行查询,可以提高效率。
还有对于查询结果,可以减少输出字段,因为你只有4个,就可以不用这样做了。
第2个回答  2014-05-04
select 指定的列看看, 还有尽量用索引来搜索吧追问

这四个列在之后都是要用的
所以用不用 * 都差不多

怎么用索引搜索?
还有为什么开机时运行会快点?

追答

使用索引可快速访问数据库表中的特定信息。索引是对数据库表中一列或多列的值进行排序的一种结构,例如 employee 表的姓(lname)列。如果要按姓查找特定职员,与必须搜索表中的所有行相比,索引会帮助您更快地获得该信息。
刚开机快些可能是 一开始内存没怎么消耗,过后程序开的多内存占用越来越高,

可以先不加这个条件,把全部查出来,然后在后台用循环来判断,当然新建一个索引是最好的

本回答被提问者采纳
相似回答