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, 再进一步判断索引是否高效

analyze table score

explain select * from score where falseG

尽量使用数值 *** 作

“小”类型够用,就不要选用“大”类型

MyISAM中,尽量使用固定长度数据列,减少存储碎片的发生;

对于Memory,InnoDB引擎,固定长度还是可变长度,不影响性能;

如果字符串数据列的不同取值的个数是有限的,就应该把它转换为ENUM数据列

select * from score procedure analyse()

1) MyISAM表消除碎片: optimize table president

2) 导出&导入, 适用所有存储引擎

mysqldump sampdb president >dump.sql

mysql sampdb <dump.sql

批量加载数据比单行数据加载效率高

无索引表比有索引表, 更快

SQL语句短比SQL语句长, 更快

加载效率比较: load data >load data local >insert into …

如果只能使用insert, 则推荐使用 单语句多行插入

使用子查询优化大数据量分页查询

这种方式的做法是先定位偏移位置的id,然后再往后查询,适用于id递增的情况。

使用id限定优化大数据量分页查询

使用这种方式需要先假设数据表的id是连续递增的,我们根据查询的页数和查询的记录数可以算出查询的id的范围,可以使用 id between and 来查询:

当然了,也可以使用in的方式来进行查询,这种方式经常用在多表关联的情况下,使用其他表查询的id集合来进行查询:

但是使用这种in查询方式的时候要注意的是,某些MySQL版本并不支持在in子句中使用limit子句。

参考 sql优化之大数据量分页查询(mysql) - yanggb - 博客园 (cnblogs.com)


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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存