1、字段属性 mysql是一种关系型数据库,可以很好地支撑大数据量的存储,但一般来说,数据库中的表越小,执行的查询也就越快,因此在建表时,选择最合适的字段属性,使字段的长度尽可能的小。 如,在定义名称字段时,若将其设置为char(255),显然给数据库增加了不必要的空间。 2、字段NOT NULL 尽量把字段设置为NOT NULL,这样在执行查询的时候,数据库不用去比较NULL值了。 3、JOIN代替子查询 在sql查询语句中,尽量使用连接join代替子查询,提高查询效率。 如,查询客户基本信息表中没有任何订单的客户,可以利用子查询先从销售信息表中将所有订单的客户id取出来,然后将结果传递给主查询。
select * from custominfo where customId not in (select customId from salesinfo)
1
利用连接join来实现,速度会更快。
select * from custominfo left join salesinfo on custominfo.customId = salesinfo.customId where salesinfo.customId is NULL 1 连接join之所以更有效率,是因为mysql不需要在内存中创建临时表来完成这个逻辑上需要两个步骤的查询工作。 sql中连接查询方式有inner join(内连接)、left join(左连接)、right join(有连接)、full join(全连接)四种。
inner join:在两张表进行连接查询时,只保留两张表中完全匹配的结果集; left join:在两张表进行连接查询时,会返回左表所有的行,即使在右表中没有匹配的记录; right join:在两张表进行连接查询时,会返回右表所有的行,即使在左表中没有匹配的记录; full join:在两张表进行连接查询时,返回左表和右表中所有没有匹配的行