【发布时间】:2011-04-10 23:40:13
【问题描述】:
我对 MySQL 了解不多,只是任何非 DBA 程序员都知道的:如何将数据输入和输出。
我的网站上有一个页面运行速度非常慢,而查询是瓶颈。这样做需要十秒钟:
SELECT foo, bar, baz, bax
FROM small_table
LEFT JOIN
large_table
on small_table.id = large_table.thread_id
我没有任何索引,所以我索引了 id 列。现在需要六秒钟。
然后我做了一些阅读,尝试了ANALYZE和EXPLAIN命令但并没有真正理解它们,然后只是为了实验,改变了表格:
SELECT foo, bar, baz, bax
FROM large_table <-- first
LEFT JOIN
small_table <-- second
on small_table.id = large_table.thread_id
现在它花了 零点六 秒。
[该应用程序是一个论坛。 small_table 列出线程(100 条记录),而 large_table 包含在这些线程上发布的帖子(20,000 条记录)。]
我当然可以继续试验,但有些问题:
- 我发现了什么原理?
- 一般来说,当我选择缓慢时,最好的方法是什么?
- 在上面的例子中,我的
SELECT和以前一样吗?它产生完全相同的结果。 - 我应该从
ANALYZE和EXPLAIN那里学到什么?
【问题讨论】:
标签: mysql optimization join