从大型数据库表mysql中搜索数据库行的有效方法

时间:2014-12-15 09:02:33

标签: mysql sql database

my-sql数据库表有数百万条数据记录。这个表包含一个主键[比如用户ID],序列号[可以有重复]和其他一些允许空值的列。 例如:说模式是

CREATE TABLE IF NOT EXISTS SAMPLE_TABLE (
         USER_ID INTEGER NOT NULL,
         SERIAL_NO NOT NULL, 
         DESCRIPTION VARCHAR(100),            
         PRIMARY KEY (USER_ID)
)ENGINE INNODB;

现在我想根据序列号搜索数据行。

我尝试首先添加一个唯一索引,包括[user id和serial no。]列

CREATE UNIQUE INDEX INDEX_USERS  ON U=SAMPLE_TABLE (USER_ID,SERIAL_NO); 

然后根据序列号搜索数据查询,如下所示;

SELECT * FROM SAMPLE_TABLE WHERE SERIAL_NO=?

但它没有成功,当我执行上面的select查询时,我在mysql服务器端出现OOM错误。感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

您不应该将user_id添加到您创建的thebthecindex中。您只需要对该查询的serial_no索引。

答案 1 :(得分:-1)

如果你提供了必要的代码,它会比给定的解释更好。但是首先你应该找到对seraial数字的id引用,然后搜索对应于id的列