成为MySQL专家的最快方式?

时间:2010-05-26 02:15:52

标签: sql mysql

我多年来一直在使用MySQL,主要是在去年左右的小型项目上。我不确定这是语言的本质还是我缺乏真正的教程,让我感到不确定我写的是否是用于优化目的和缩放目的的正确方法。

虽然在PHP中自学成才,但我非常确定自己和我编写的代码,很容易将其与其他人比较等等。

使用MySQL,我不确定是否应该(以及在什么情况下)使用INNER JOIN或LEFT JOIN,我也不知道它具有大量的功能。虽然我已经为处理了数千万条记录的数据库编写了代码,但我不知道它是否是最佳的。我经常发现一个小的调整会使查询的时间少于原始时间的1/10 ......但我怎么知道我当前的查询也不慢?

我希望在这个领域对优化数据库和可扩展的能力充满信心。使用不是问题 - 我每天都会以多种不同的方式使用它。

所以,问题是,路径是什么?读书?网站/教程?建议?

6 个答案:

答案 0 :(得分:5)

成为某事物专家的唯一方式是经验,通常需要时间。还有一个优秀的导师比你更好地教你缺少什么。问题是你不知道你不知道什么。

答案 1 :(得分:5)

EXPLAIN是你的朋友。如果您学习使用此工具,则应该能够非常有效地优化查询。

  
      
  • 扫描MySQL手册并阅读Paul DuBois的MySQL书。
  •   
  • 使用EXPLAIN SELECT,SHOW VARIABLES,SHOW STATUS和SHOW PROCESSLIST。
  •   
  • 了解查询优化器的工作原理。
  •   
  • 优化您的表格格式。
  •   
  • 维护你的表(myisamchk,CHECK TABLE,OPTIMIZE TABLE)。
  •   
  • 使用MySQL扩展来更快地完成任务。
  •   
  • 如果您发现需要某些功能,请编写MySQL UDF功能   功能很多。
  •   
  • 如果您不需要,请不要在表级或列级使用GRANT   它。
  •   
     

http://dev.mysql.com/tech-resources/presentations/presentation-oscon2000-20000719/index.html

答案 2 :(得分:2)

研究和经验 - 如果您没有项目来保证研究,请制作它们。制作三张包含相关数据的表格,并制作方案。

E.g。

制作电影表格数据

制作用户表

为用户制作评级表

花时间学习联接如何工作,如何在一个查询中获取特定评级范围的电影,如何搜索电影表(如正则表达式) - 如上所述,使用说明来查看不同的事物如何影响速度。做一天吧;我向你保证 处理它会大大增加。

如果您仍然在为案例场景而苦苦挣扎,请先在SO上查找问题,然后亲自尝试这些场景。

答案 3 :(得分:1)

我不知道麻省理工学院开放的课件是否有关于数据库的内容......哇,你知道吗?他们这样做:http://ocw.mit.edu/OcwWeb/Electrical-Engineering-and-Computer-Science/6-830Fall-2005/CourseHome/

我建议仅作为一个基于MIT声誉的来源。如果您可以从大学参加正式课程,您可能会觉得很有帮助。对基础离散数学/逻辑的充分理解肯定不会造成伤害。

答案 4 :(得分:1)

正如其他人所说,时间和实践是唯一真正的方法。

更实际的是,我发现EXPLAIN为我个人创造了奇迹。学习阅读它的输出可能是我能够编写高效查询的最大单一飞跃。

我发现真正有用的第二件事是SQL Tuning by Dan Tow,它描述了一种提取性能的相当正式的方法。这有点牵扯,但在很多情况下效果很好。如果不出意外,它将使您更好地了解联接的处理方式。

答案 5 :(得分:0)

从类似这样的课开始:https://www.udemy.com/sql-mysql-databases/

然后使用您学到的知识来创建和管理大量SQL数据库并运行查询。达到专家水平实际上是关于实践。但是当然你需要在练习之前先学习它们。