MySQL选择具有连接的查询并优化了很多结果
|
我有两张桌子。第一个包含所有项目信息,第二个包含具有类别ID的项目ID。这样做的原因是,一项可以属于多个类别。我的桌子上大约有500 000件物品。
这是一个选择查询示例:
SELECT SQL_CALC_FOUND_ROWS items.*
FROM items
INNER JOIN cat
ON items.iid=cat.iid
WHERE (items.expire>\'1308061323\' AND cat.cid = \'1\')
AND (items.code=71 OR items.code=23)
ORDER BY price DESC
LIMIT 0, 50
iid =商品ID
cid =类别ID
代码=我仅用于搜索的代码。
expire =的到期时间
项目
我使用SQL_CALC_FOUND_ROWS,因为我想显示总的匹配结果。我在页面上仅显示50个项目(LIMIT 0、50)。
当我执行该查询时,我的php页面需要大约5秒钟的加载时间(如果没有查询,则少于1秒)。
有没有优化的方法?
使用SQL_CALC_FOUND_ROWS或带有SELECT COUNT(*)的第二个查询是否更快?
我听说过索引,但是我不知道如何使用索引以及它们的作用。他们可以帮忙吗?
没有找到相关结果
已邀请:
3 个回复
坊岔埠绵
它应该立即改善您的查询。 我的建议是通过阅读stackoverflow.com上的一些文章来了解索引的工作方式。 这是一个很好的例子:SQL Server中的索引是什么? 编辑: 如果索引那么好,我可以创建 每个字段的索引。什么是 使用索引的后果? 实际上,索引是灵丹妙药。它每次都有效。查询时间过长,繁荣,请建立索引。这就是为什么在创建主键时,MySQL向该字段添加索引的原因。 另一方面,索引占用了服务器上的空间,其他操作:删除,更新,插入将花费更多时间。 因此,如果您不经常删除,更新或插入并选择很多内容,则几乎可以为每个字段创建一个索引。 最好的办法是太全面地了解索引的使用,因此您可以做出很好的选择。
鞋扣蚊冈借
表格上为字段
创建索引 在
表格上为字段
或
创建一个索引。看看哪个最快。 您可以在选择项前面使用ѭ7来获取有关如何优化选择项的信息。 http://dev.mysql.com/doc/refman/5.0/en/explain-output.html
席酱