Magento的后台有两种最主要的通用组件:Grid和Form,基本上所有看到的列表表格都是Grid(继承自Mage_Adminhtml_Block_Widget_Grid),基本上所有看到的表单都是Form(继承自Mage_Adminhtml_Block_Widget_Form)。Magento的Grid是个非常好用的组件,用户只需要按照它的结构写法,指定数据源和需要显示的字段,组件会自动提供包括分页,排序,过滤,导出和批量处理等功能。
为什么说Magento的Grid藏着一个坑呢,问题就出在过滤这里。作为一个开源的系统,Magento需要考虑最大的通用性,所以在Grid组件的设计上,所有的文本框类型(Text)的字段列,过滤的时候都是模糊查询(like %XXX%),数据量小的时候,这都不是事,数据量大到一定程度,速度慢不说,每一次的过滤操作都是对数据库的一次摧残(效果详见Mysql的慢查询日志)。