【发布时间】:2012-09-15 03:41:30
【问题描述】:
我为我的项目处理分层类别和产品表。
类别表结构:
ID - 父级 - 标题
1 - 0 - 计算机
1 - 0 - 电话
...
第 25107 行的类别表计数。
产品表结构
ID - CAT - 标题
1 - 1 - 产品名称在这里
我想要列表产品的当前类别和子类别。
echo $subcats = categoryChild(0);
输出为:64198,18355,18356,95623,90504,6118,90505,6117,90506,90507,6119,6120,90508,90509,90510,90511,6103,90512,90513,90514,6851 14205119051190511905119051190518905 ,,9111905119051890581890568890568958188989889898989895889898958898989889898988905689898905 142698,142700,3596
我正在使用这个输出 MySQL IN 语句。 最后生成这个 SQL 查询:
SELECT * FROM products WHERE cat IN (64198,18355,18356,95623,90504,6118,90505,6117,90506,90507,6119,6120,90508,90509,90510,90511,6103,90512,90513,90514,90515,142686,142688,142790,90516,6105,90517,90518,90519,90520,90521,91691,91692,92189,92190,92312,92313,95618,95619,95620,95621,95622,142684,142690,142692,142694,142696,142698,142700,3596)
这个查询很慢...请帮助我。
【问题讨论】:
-
一个非常基本的检查,但是您是否为“cat”字段编制了索引;-)?
-
你如何得到 $subcats = categoryChild(0) ?
-
categoryChild 是从 parentId 生成类别 id。 0 是父 ID