通常我不会考虑这个,但我想知道这会有什么不利之处呢?
我目前的设置:
随着表格越来越大,搜索变得非常缓慢,尽管大多数情况下,每次搜索只需要在150 000行上执行。
在使用全文索引时,只能搜索客户端的行很难。
一种选择是创建第三个全文列,该列是客户ID的复合,加上在全文行中找不到的字符,并在全文搜索中包含第三列。啊。
为每个客户端设置一个唯一的表,只搜索他们的表是非常错的吗?我的测试中搜索速度非常快。一旦你开始需要多个MySQL服务器,这会怎么样?
答案 0 :(得分:4)
也许你应该看一下这篇文章:
http://www.mysql.com/products/enterprise/partitioning.html
也是这个:
http://dev.mysql.com/doc/refman/5.1/en/partitioning.html
这个逻辑与“每个客户的桌子”有点不同,但它应该符合您的需求。
答案 1 :(得分:1)
通常,分区比在多个表上手动分割数据更受欢迎。有一些需要注意分区的注意事项。特别是foreign keys are not supported。
对于您的特定用例,您有一个理由想要采用“手动拆分”路线:分隔statistics for your fulltext searches:
相关性是根据行中的单词数计算的 该行中唯一单词的数量,中的单词总数 集合,以及包含a的文档(行)数 特别的话。
如果所有数据都存储在一个签名表中(无论是否已分区),属于一个给定用户的数据会影响所有用户的相关性分数。
显然,如果您从未按相关性排序搜索结果(例如,如果您只是查找布尔匹配),则不适用。