由于INNODB的ACID功能,我从底层构建了一个应用程序。然而,我遇到了一点阻碍。我有一个products表,每个产品的类别都用分隔符分隔。总共有大约1800种独特的产品,每种产品一次大约有3-4种。我有大约30万排独特的产品。
我试着按书做这件事,并通过为它们创建一个单独的表来规范我的类别,并使用许多到多个关系将它们与我的产品关联起来。但是,问题是,products表本身大约有30万行强,再加上一个包含大约90万行的多到多个类别关联表,我们就有了一个怪物!这两张桌子的连接几乎不可能得到合理的速度.
在这种情况下,通过在products表中将类别的原始格式存储在它们自己的文本字段中,您会做些什么呢?要根据类别筛选这些产品,我可以使用全文搜索吗?这种方法的利弊是什么?
顺便说一下,我在共享服务器上,所以我不能增加缓冲区大小,也不能利用内存管理来真正利用InnoDB
解决了的问题,如果可以的话,我会把所有在这里嘲笑和嘲笑我错误的幻想的人都投给我,因为我认为这本书(正常化)的进展似乎花费了我的速度。事实上,它给了我一致性,随着一些指数的调整,我得到了闪电般的快速速度。谢谢大家。
发布于 2012-11-29 18:33:27
您的主题表明您正在考虑使用MyISAM而不是InnoDB,但是接下来您的问题会询问去角色化的价值。
见我对在数据库列中存储分隔列表真的有那么糟糕吗?的回答
如果您总是需要知道给定产品的类别,那么去甲基化可能会有所帮助。如果您需要知道给定类别的产品,情况会更糟--或者您需要在“类别”表的每一行中存储一个冗余的产品列表。祝他们保持同步。
如果您有正确的索引,那么将300 k表连接到900 k表应该是简单和有效的,。
你应该学会使用EXPLAIN优化查询。
https://stackoverflow.com/questions/13632293
复制相似问题