mysql中使用select进行检索需要注意哪些问题?

提问者:帅平 问题分类:数据库
mysql中使用select进行检索需要注意哪些问题?
1 个回答
♀如此美
♀如此美
使用select进行检索的时候需要注意如下问题:
1、尽量避免使用select *,join语句使用select *可能导致只需要访问索引即可完成的查询需要回表取数。
一种是可能取出很多不需要的数据,对于宽表来说,这是灾难;一种是尽可能避免回表,因为取一些根本不需要的数据而回表导致性能低下,是很不合算。
2、严禁使用 select * from t_name,而不加任何where条件,道理一样,这样会变成全表全字段扫描。
3、MySQL中的text类型字段存储:
(1)不与其他普通字段存放在一起,因为读取效率低,也会影响其他轻量字段存取效率。
(2)如果不需要text类型字段,又使用了select *,会让该执行消耗大量io,效率也很低下
4、在取出字段上可以使用相关函数,但应尽可能避免出现 now() , rand() , sysdate() 等不确定结果的函数,在Where条件中的过滤条件字段上严禁使用任何函数,包括数据类型转换函数。大量的计算和转换会造成效率低下,这个在索引那边也描述过了。
5、分页查询语句全部都需要带有排序条件,否则很容易引起乱序
6、用in()/union替换or,效率会好一些,并注意in的个数小于300
7、严禁使用%前缀进行模糊前缀查询:如:select a,b,c from t_name where a like ‘%name’; 可以使用%模糊后缀查询如:select a,b from t_name where a like ‘name%’;
8、避免使用子查询,可以把子查询优化为join操作
通常子查询在in子句中,且子查询中为简单SQL(不包含union、group by、order by、limit从句)时,才可以把子查询转化为关联查询进行优化。
发布于:1年前 (2023-03-22) IP属地:四川省
我来回答