1、选取最适用的字段属性mysql可以支持巨大的数据吞吐量,性能方面来说,数据库表越小,执行查询的速度越快.因此建表需要更高性能,可以将表中字段宽度合理.
例如设置电话号码,如果将用CHAR(255)无疑是不必要的空间,甚至使用varchar也是,所以CHAR(11)就能完成任务了.
另外一种手段就是,应该把字段设置为not null ,查询的过程数据库不会比较null值
2、使用连接(JOIN)来代替子查询(Sub-Queries)
select查询的时候子查询是可以一次性使用多个逻辑辑需求的步骤,同事避免事务.但是比较链接查询速度较慢
3、使用联合(UNION)来代替手动创建的临时表
使用union查询它需要使用临时表的两条或者更多select合并一个查询.在客户端查询会话结束的时候,临时表会删除,从而保证数据库整齐搞笑.
使用union创建拆线呢,只需union作为关键字把多个select语句链接起来就行了,
SELECT name,phone FROM client UNION
SELECT name,birthdate FROM author UNION
SELECT name,supplier FROM product
4、事务
尽管使用了子查询,连接,联合查询,但是数据库操作只能一条或者几条sql完成.更多时候应用场景有所局限.
当语句运行出左导致整个操作不稳定.这个时候需要考虑其他方案了.例如第一个表成功更新后数据库出现意外状况,造成第二个表操作没完成.没法保证数据完整.甚至会破坏数据库的数据.避免的方法就是使用事务,作用于每条语句都操作成功否则全部失败.保持一致性和完整性
5、优化的查询语句
绝大多数情况,使用索引也可以提高查询效率,但是sql使用不恰当,就适得其反了.
(1)最后在相同类型字段进行比较操作
(2)建有索引的字段尽量不用函数进行操作
(3)在搜索字符型字段,会使用LIKE关键字和通配符,这种做法很简单,但必须牺牲系统性能为代价
|
|