【问题标题】:Two tables, with indexes, with the same column names, containing different info... will there be a conflict?两个表,有索引,有相同的列名,包含不同的信息……会不会有冲突?
【发布时间】:2011-05-19 19:55:54
【问题描述】:

所以我有一个类可以创建一个要填充数据的表。现在我的所有列名都相同(产品名称、日期等)。我注意到,当我在 Webmin 中查看我的表时,只有一个名为“product_date”的索引,尽管据说有两个表使用该索引。我不认为这会很好。

我的问题是这是否会在未来引起冲突?如果我以后只需要重组所有内容,我不想用数千行填充表格。我无法想象我是第一个遇到这种情况的人……也许我只是对索引的工作方式有误解/webmin 显示索引并且过于偏执。

(编辑)

针对下面的一条评论,以下是 SHOW CREATE TABLE tablename 的结果:

 c_1    | CREATE TABLE c_1 (
  p_id int(11) NOT NULL auto_increment,
  nm varchar(100) NOT NULL,
  m_name text NOT NULL,
  PRIMARY KEY  (p_id),
  KEY nm (nm),
  FULLTEXT KEY m_name (m_name)
) ENGINE=MyISAM DEFAULT CHARSET=latin1

 c_2    | CREATE TABLE c_2 (
  p_id int(11) NOT NULL auto_increment,
  ne varchar(100) NOT NULL,
  m_name text NOT NULL,
  PRIMARY KEY  (p_id),
  KEY nm (nm),
  FULLTEXT KEY metaphone_name (m_name)
) ENGINE=MyISAM DEFAULT CHARSET=latin1

请注意,等效列上的所有索引都以相同的方式命名。

【问题讨论】:

  • 您是在两个表上还是在单个表上检查索引?也许在两个表上都创建了索引。在两张桌子上试试show create table yourtablename 看看。

标签: mysql indexing myisam webmin


【解决方案1】:

如果是每个表的索引,没问题

【讨论】:

  • 我认为你是对的,我的问题是我对 Webmin 的不熟悉,这使得它看起来好像只有一个由多个表共享的每列索引。这就是我使用 GUI 所得到的。我能够使用 SHOW INDEXES FROM c1;SHOW INDEXES FROM c2; 并且它们看起来都是合法的......感谢您的帮助。
  • “DROP INDEX index_name”会从所有包含名为 index_name 的索引的表中删除 index_name 吗? @布莱恩
【解决方案2】:

如果我正确理解了您的问题(如果),您必须为 each 表创建一个索引。在您了解诸如索引/物化视图之类的高级概念之前,索引不会覆盖多个表,我认为 MySQL 无法处理这些概念。

【讨论】:

  • 当我创建表时,我正在为每个表创建一个索引......但我的索引具有相同的名称。我需要知道这是否会在以后产生冲突,或者我是否应该更改每个表上的列名,以便索引(在创建表时自动创建)以不同的方式命名。
猜你喜欢
  • 2019-12-19
  • 2012-10-02
  • 1970-01-01
  • 1970-01-01
  • 2017-06-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多