有人可以推荐一个关于MySQL索引的好教程,特别是在连接期间在order by子句中使用时吗?

Phi*_*oum 3 mysql indexing join sql-order-by where-clause

我可以尝试发布并解释我正在尝试运行的确切查询,但我会按照古老的格言说,"给一个人一条鱼,他会吃一天,教一个人钓鱼,他他将度过余生." SQL优化似乎非常特定于查询,即使您可以为我解决这个特定查询,我将来还要编写更多查询,并且我希望了解索引的工作原理一般来说.

不过,这里是我当前问题的快速描述.我有一个连接三个表并在0.2秒内运行的查询.真棒.我添加了一个"order by"子句,它在4分30秒内运行.苏茨基.我对一个表进行了非规范化,因此只有少一个连接,在任何地方添加索引,现在查询运行... 20分钟.我勒个去?最后,我根本不使用连接,而是使用"where in(...)order by"的子查询,现在它在1.5秒内运行.相当体面.上帝的名字是怎么回事?我觉得如果我真的明白索引在做什么我可以写一些非常好的SQL.

有人知道一些很好的教程吗?谢谢!

new*_*ver 5

我会推荐我最近阅读的两本书:

  1. 高性能MySQL
  2. 重构SQL应用程序