美文网首页
sql的相关优化

sql的相关优化

作者: houxin | 来源:发表于2020-03-27 10:12 被阅读0次

一、某些数据库的函数会禁用mysql本身的查询缓存

例如,数据库中出现CURDATE(),NOW() 和 RAND() 或是其它的诸如此类的SQL函数都不会开启查询缓存

如果使用缓存的话,可以使用变量代替这种函数结构。

二、可以再数据表前面加上EXPLAIN参数进而帮助自己分析sql语句的查询性能。

可以借助phpmyadmin更清晰的查看数据表运行的更多细节。

EXPLAIN 的查询结果还会告诉你你的索引主键被如何利用的,你的数据表是如何被搜索和排序的……等等,等等。

三、当只要一行数据时使用 LIMIT 1

四、索引并不一定就是给主键或是唯一的字段。

如果在你的表中,有某个字段你总要会经常用来做搜索,那么,请为其建立索引吧。

另外,你应该也需要知道什么样的搜索是不能使用正常的索引的。例如,当你需要在一篇大的文章中搜索一个词时,如: “WHERE post_content LIKE ‘%apple%'”,索引可能是没有意义的。你可能需要使用MySQL全文索引 或是自己做一个索引(比如说:搜索关键词或是Tag什么的)

五、在Join表的时候使用相当类型的例,并将其索引

如果你的应用程序有很多 JOIN 查询,你应该确认两个表中Join的字段是被建过索引的。这样,MySQL内部会启动为你优化Join的SQL语句的机制。

六、千万不要 ORDER BY RAND()

如果你真的想把返回的数据行打乱了,你有N种方法可以达到这个目的。这样使用只让你的数据库的性能呈指数级的下降。

七、避免 SELECT *

八、永远为每张表设置一个ID

我们应该为数据库里的每张表都设置一个ID做为其主键,而且最好的是一个INT型的(推荐使用UNSIGNED),并设置上自动增加的AUTO_INCREMENT标志。

九、使用 ENUM 而不是 VARCHAR

你知道这些字段的取值是有限而且固定的,那么,你应该使用 ENUM 而不是 VARCHAR。

十、从 PROCEDURE ANALYSE() 取得建议

在phpmyadmin中的表现为,查看表结构,表下面有个字段显示是"规划表结构",这里会给你一些关于表的一些建议。仅供参考,只有表的数据比较大的时候,这些建议才会变的准确,否则可以不采纳。

十一、尽可能的使用 NOT NULL

十二、垂直分割

十三、拆分大的 DELETE 或 INSERT 语句

对于牵涉到大批量的更新和删除的操作时候,可以分批处理 ,处理完一批,休息一下,然后继续。

例如:

while (1) {
    //每次只做1000条
    mysql_query("DELETE FROM logs WHERE log_date <= '2009-11-01' LIMIT 1000");
    if (mysql_affected_rows() == 0) {
        // 没得可删了,退出!
        break;
    }
    // 每次都要休息一会儿
    usleep(50000);
}

十四、选择合适的存储引擎

MyISAM 适合于一些需要大量查询的应用,但其对于有大量写操作并不是很好。甚至你只是需要update一个字段,整个表都会被锁起来,而别的进程,就算是读进程都无法操作直到读操作完成。另外,MyISAM 对于 SELECT COUNT(*) 这类的计算是超快无比的。

InnoDB 的趋势会是一个非常复杂的存储引擎,对于一些小的应用,它会比 MyISAM 还慢。他是它支持“行锁” ,于是在写操作比较多的时候,会更优秀。并且,他还支持更多的高级应用,比如:事务。

相关文章

  • MySQL慢查询日志相关笔记

    MySQL优化SQL,针对慢SQL语句的查询及相关配置。相关命令: 需要永久开启慢SQL查询日志,需要在my.in...

  • sql 优化相关

    选择合适的数据库引擎 Myisam存储引擎:如果表对事物要求不高,同时是以查询和添加为主的,我们考虑使用myisa...

  • sql的相关优化

    一、某些数据库的函数会禁用mysql本身的查询缓存 例如,数据库中出现CURDATE(),NOW() 和 RAND...

  • Hive优化实践1-数据倾斜及join无关的优化

    Hive SQL的各种优化方法基本 都和数据倾斜密切相关。 Hive的优化分为join相关的优化和join无关的优...

  • 常用sql优化2019-09-27

    sql优化 sql优化.................................................

  • mysql数据库优化

    1. Mysql优化介绍 1.1 sql优化 a. sql优化分析b. 索引优化c. 常用sql优化d. 常用优化...

  • Mysql 优化

    1.Sql优化 1)sql优化分析2)索引优化3)sql语句优化4)一些常用的技巧优化 (正则、函数) 2.优化数...

  • MYSQL:SQL中优化相关

    MySQL优化-表之间JOIN的关键字ON和Where(01) https://www.cnblogs.com/t...

  • sql优化的一般策略

    sql 优化的一般策略:索引优化,sql改写,参数优化,优化器 索引优化 以select * from vvsho...

  • SQL语句优化, since 2022-04-22

    (2022.04.22 Fri)SQL语句的优化目的在于提高SQL语句的运行效率。注意SQL优化和数据库优化的区别...

网友评论

      本文标题:sql的相关优化

      本文链接:https://www.haomeiwen.com/subject/kodfuhtx.html