mysql - 查询 : Select products from master- and subcategories

标签 mysql

我需要在一个查询中从主类别及其所有子类别中选择产品。

我有 3 个表:项目、类别、itemCategories(包含项目和类别之间的链接)。我的类别有左值和右值 ( Wikipedia: Nested set model )。

我对 leftCount 5 和 rightCount 58 的主类别的查询:

SELECT i.* FROM itemCategories ic, categories c, items i 
WHERE i.isActive = '1' AND i.isHidden = '0' 
AND ic.itemId = i.id AND ic.categoryId = c.id 
AND c.leftCount BETWEEN 5 AND 58
ORDER BY i.sortingValue, i.name

我有大约 16.000 个产品,上面的查询将列出大约。其中50%。据我所知,这应该是一个简单的操作,但查询大约需要 0.1100 秒。

索引适用于:

  • 类别中的剩余数量
  • 项目中的 isActive 和 isHidden
  • itemCategories 中的 itemId 和 CategoryId

您有任何性能建议吗?

更新

当我删除 ORDER BY 时,查询时间减少到 0.0007 秒。所以我猜时间花在了对临时表进行排序上。有任何性能助推器可以帮助实现这一目标吗?

最佳答案

categories.idcategories.leftCount 上放置 BTREE 索引:

ALTER TABLE categories ADD INDEX myIXD USING BTREE (id, leftCount)

关于mysql - 查询 : Select products from master- and subcategories,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27511448/

相关文章:

Mysql:插入性能 INNODB vs MYISAM

mysql - Laravel 预加载数据透视表关系

mysql - MySql中如何连接多个条件表

php - 从 textfield 和 textarea 插入到 sql 不起作用

mysql - 从使用不同数据库的 DbConnection 派生类

mysql - 无法调试 Windows 窗体程序

php - 我怎样才能让我的 3 级层次结构快速加载

java - 当我尝试关闭 MySQL 连接时出错

mysql - 在 Yii 中从数据库生成模型?

php - 在 MySQL 中搜索具有多个标签或 'Select all exept' 的 Tagtable