mysql 如何优化无索引查询

mysql 如何优化无索引查询,第1张

mysql优化无索引查询:SQL>CREATE TABLE test_tab (id INT,name VARCHAR(10),age INT,val VARCHAR(10)。

1、对查询进行优化,应尽量避免全表扫描,首先应考虑在where及order by涉及的列上建立索引

2、应尽量避免在 where子句中使用!=或<> *** 作符,否则将引擎放弃使用索引而进行全表扫描。

3、应尽量避免在 where子句中对字段进行null值判断,否则将导致引擎放弃使用索引而进行全表扫描。

运行mysql安装文件:

按 Next,然后选择安装方式,有 "Typical(默认)"、"Complete(完全)"、"Custom(用户自定义)",选择第二个选项 "Custom",下一步, MySQL Server (mysql服务器), Developer Components (开发者部分), Debug Symbols (调试符号), Server data files (服务器数据文件) 默认。

改变安装路径;原路径是"C:\Program Files\MySQL\MySQL Server 5.5\",也可以修改为:"E:\Program Files\MySQL Server 5.5\"。

假如你有一个表,

SQL>

CREATE

TABLE

test_tab

(2

id

INT,

3

name

VARCHAR(10),

4

age

INT,

5

val

VARCHAR(10)6

)你的业务,有一个查询,是

SELECT

*

FROM

test_tab

WHERE

name

=

一个外部输入的数据

刚开始,数据不多的时候,执行效果还不错。

随着数据量的增加,这个查询,执行起来,越来越慢了。

然后在

name

上面

建立了索引

CREATE

INDEX

idx_test4_name

ON

test_tab

(name

)

这样,

可以加快前面那个查询的速度。

但是,某天,你执行了下面这个SQL,

发现速度又慢了

SELECT

*

FROM

test_tab

WHERE

age

=

25

为啥呢?

因为

age

字段上面,没有索引

索引只在

name

上面有

换句话说,

也就是

WHERE

里面的条件,

会自动判断,有没有

可用的索引,如果有,

该不该用。

多列索引,就是一个索引,包含了2个字段。

例如:CREATE

INDEX

idx_test_name_age

ON

test_tab

(name,

age)那么SELECT

*

FROM

test_tabWHEREname

LIKE

'张%'

AND

age

=

25

这样的查询,将能够使用上面的索引。

多列索引,还有一个可用的情况就是,

某些情况下,可能查询,只访问索引就足够了,

不需要再访问表了。例如:SELECTAVG(

avg

)

AS

平均年龄FROMtest_tabWHEREname

LIKE

'张%'

这个时候,

name

age

都包含在索引里面。

查询不需要去检索表中的数据。

mysql查询in为什么用不上索引

mysql查询in用不上索引,说明查询语句本身有问题。 MySQL是查询语句,最好用Access 2010来 *** 作。 查询是用来 *** 作数据库中的记录对象,利用它可以按照预先定义的不同条件从数据表或其它查询中筛选出需要 *** 作的字段,并可以把它们集中起来


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/7581177.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-07
下一篇 2023-04-07

发表评论

登录后才能评论

评论列表(0条)

保存