首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用MYSQL存储索引列表?

用MYSQL存储索引列表?
EN

Stack Overflow用户
提问于 2013-03-06 13:49:30
回答 2查看 195关注 0票数 2

我有一个与MySQL/PHP性能相关的问题。

我需要将与每个记录关联的索引列表存储在一个表中。每个列表包含1000个索引。我需要能够快速访问列表中与给定记录相关联的任何索引值。我不知道最好的办法是什么。我想过以下几种方法,并希望你能对它们作出贡献:

  1. 将列表存储在字符串中,作为逗号分隔的值列表或使用JSON。性能可能很糟糕,因为我只需要从DB中提取出整个列表到PHP,就可以检索单个值。解析字符串也不太快.我可以将一些扩展的列表存储在PHP端使用最少的缓存中,以减少负载。
  2. 创建一个包含1001列的列表表,这些列将存储列表及其主键。我不知道这对存储费用有多大?这也让人感觉像是在滥用这个系统。那么,如果我需要存储100000种索引呢?
  3. 只使用SQL存储包含我的索引的二进制文件的名称,并对每个访问执行一个fopen();file ();fread();fclose()循环?不确定系统文件系统缓存将如何对此作出反应。如果情况不好,就有很多解决办法来解决问题.但这听起来有点过头了不是吗?

你对此有何看法?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-03-06 13:53:26

好的一对多的关系怎么样?

代码语言:javascript
复制
records
-------
id     int
record ...

indices
-------
record_id int
index     varchar

然后:

代码语言:javascript
复制
    SELECT *
      FROM records
 LEFT JOIN indices
        ON records.id = indices.record_id
     WHERE indices.index = 'foo'
票数 1
EN

Stack Overflow用户

发布于 2013-03-06 13:51:46

标准的解决方案是创建另一个表,每行一行(记录、索引),并添加MySQL索引以允许快速搜索

代码语言:javascript
复制
CREATE TABLE IF NOT EXISTS `table_list` (
  `IDrecord` int(11) NOT NULL,
  `item` int(11) NOT NULL,
  KEY `IDrecord` (`IDrecord`)
)

根据您的需要更改item的类型--我在示例中使用了int

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15249098

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档