高级MySQL我错过了这一点吗?

时间:2009-04-19 15:26:37

标签: mysql

我不确定这个问题是否有意义。但我知道mysql的所有基本CRUD命令。可能在这里和那里(外键等)更多一点。但是有很多书写在mysql / dbms上。我可以编写体面的查询,并根据需要获得所有结果。也许它们不是最有效的,但却有效。多数民众赞成因为我的应用程序还不是Facebook,我不得不担心优化。或者我呢?

我在这里错过了这一点吗?我还应该知道什么?

非常感谢。

10 个答案:

答案 0 :(得分:6)

过早优化是万恶之源。专注于设计正确的和逻辑的数据库结构并正确索引它们,这将带你走远。修改编写错误的查询总是比修改设计糟糕的数据库结构更容易。

在我看来,使用您拥有的查询并在需要优化时对其进行优化。什么来查询,而是专注于使它们安全(参见sql注入)。

答案 1 :(得分:5)

  

我还应该知道什么?

  • 更好地理解关系理论,让你编写更好的SQL。我目前正在享受“SQL and Relational Theory”,这是世界领先的关系模型专家C. J. Date的新书。

  • 实施和监控security - 当然是SQL注入,但OWASPSANS.org或“19 Deadly Sins of Software Security”等书籍涵盖了其他问题。这是一个不是特定于SQL的广泛主题,但我认为每个软件开发人员都有责任学习这些东西。

  • 效果衡量和monitoring - 当您达到 需要学习优化技巧的时候,您将如何知道?

  • I18N, L10N, character sets

  • 数据库维护和恢复 - backups, repair

  • Replicationclusteringproxying

  • 部署和升级技术 - 如何在不中断服务的情况下将更改应用于正在运行的应用程序或站点。

  • 编写适用于多个RDBMS品牌的或多或少的可移植SQL。至少要了解在需要支持其他品牌时需要重写的内容。

  • 如何以及何时使用对象关系映射框架。

  • 如何以及何时使用non-relational databases。 SQL是最好的通用数据管理范例,但还有其他技术更专用于特定任务。

答案 2 :(得分:1)

无论如何,你应该担心优化。当然,如果你现在只有10个人正在使用你的应用程序,那不是问题,但是将来如果用户群增长,那么重写数据库结构真的是一个“痛苦的屁股”,特别是如果在你的代码中你正在使用没有数据库抽象的原始查询。

答案 3 :(得分:1)

高级MySQL可能不仅仅是为CRUD操作编写查询。有时您需要进行优化或各种维护过程,这些过程需要熟悉您正在使用的DBMS。如果处理中小型应用程序,您可能不会担心查询的性能以及数据库设计的稳健性和效率,但对于高度可伸缩的应用程序,所有这些都是您必须考虑的因素。

答案 4 :(得分:1)

很好地了解CRUD语法。我建议您超越它来理解关系设计,主键和候选键,索引等。这些主题对所有关系数据库都有意义,而不仅仅是MySQL。

答案 5 :(得分:1)

数据库不仅仅是“放置东西的地方”。一旦你意识到这一点,你就会开始充分利用它们。

答案 6 :(得分:0)

如果您足够了解需要做的事情,那么您现在已经足够了解 。但是,C.J.Date的Introduction to Database Systems是对该领域先驱(以及其他类型的数据库系统)编写的关系数据库的杰出讨论。

答案 7 :(得分:0)

通常,人们都不知道有很多mysql和其他RDBMS系统的功能。这很好,因为你可以很好地利用一部分功能,但是为了解决困难问题或成为一名优秀的DBA,需要学习大量的东西。当人们谈论数据库上的Advanced X时,这些就是所谓的事物类型。

要回答您的问题,找出其他功能和工具并不是一个坏主意。您可能会找到更好的方法来解决自己的问题,并开发出更好的技能来解决其他人的问题。我也完全赞同其他答案,建议你提高你对更高级别主题的知识,知道如何制作好的数据库设计是非常重要的。

答案 8 :(得分:0)

哦,现在我明白了(问题)。我以为你的意思是“将'Advanced'和'MySQL'结合起来有什么意义?” : - )

如果你必须使用MySQL来做你的工作,那么是的,你最好逐渐深入了解它,特别是缺点和陷阱是什么,以及其他工作人员如何对未真正发生的事情做出假设锻炼。

现在,我的“巨魔”:如果这只是你,请使用更强大的东西。我不是MicroSoft的粉丝,但假设您正在使用Windows,他们确实使用SQL Server的启动成本相当低。更好的是,如果您正在使用* nix服务器,您可以尝试使用PostgreSQL。他们非常认真地正确实现了ROLLBACK,事务隔离,外键参照完整性,视图,函数(也称为存储过程)这些古怪的小东西已有好几年了。 MySQL已经多年来有所改进,但仍然(恕我直言)有点不成熟。我在2000年左右的印象是“xBASE的可靠性和SQL接口的简易性”。 (我不是SQL语言本身的忠实粉丝 - 也许我太老了,不能真正热身,因为“唯一可行的方法”)

答案 9 :(得分:0)

我避免使用MySQL就像一个坏的流感病毒,但我可以在这里添加一些见解。 MySQL的“高级”部分将涉及的一个领域是自定义。

一般来说SQL很多都没有开箱即用,或者可以自定义。我们公司使用完整存储过程实现和地理空间查询作为两个示例。

高级将涉及良好的自定义技能,以及添加和使用自定义或加载项的经验。任何让MySQL更像企业的东西。