Mysql性能发送数据

时间:2013-08-07 22:15:44

标签: mysql performance

我有一张看起来像这样的表:

ID(INT,9,UNIQUE KEY)---项目(INT,3)---用户ID(INT,9)---位置(VARCHAR,12)

现在我想运行folling查询:

SELECT COUNT( * ) 
FROM table
WHERE Position LIKE  'BAG%'
AND Userid = ".USERID."

这些案件唯一可能的位置是“BAG0”,“BAG1”,[...],“BAG6”
那些总是唯一的 - 这意味着没有Userid在BAG2中有两个项目。例如。它并不总是唯一的 - 例如两行“Userid:82378,Positon:'BOX1'”是可能

即使我尝试IN() - Clause也不会改变结果。

此查询的“发送数据”时间总是大约50毫秒。

您对我如何修改此表有任何想法,以便此查询更快地运行吗?

1 个答案:

答案 0 :(得分:2)

这是您的查询:

SELECT COUNT( * ) 
FROM table
WHERE Position LIKE 'BAG%' AND
      Userid = ".USERID.";

这是一个非常简单的查询。加快速度的唯一方法是使用索引。我建议使用table(UserId, Position)的综合索引。 MySQL应优化like,因为初始前缀是常量。但是,如果你真的想要真正确定索引被使用,你可以这样做:

SELECT COUNT( * ) 
FROM table
WHERE Position in ('BAG0', 'BAG1', 'BAG2', 'BAG3', 'BAG4', 'BAG5', 'BAG6') and
      Userid = ".USERID.";