SQL:如何在单个表上优化许多SELECT

时间:2012-04-26 21:22:59

标签: mysql sql optimization select indexing

我用

创建了一个表
CREATE TABLE xy (
blub VARCHAR(50) NOT NULL,
z INT UNSIGNED NOT NULL,
PRIMARY KEY (blub)
)

并希望通过“blub”列一次查询多个条目。目前我正在使用简单查询

SELECT blub, z FROM xy WHERE blub = '...'

快得多
SELECT blub, z FROM xy WHERE blub = '...' OR blub = '...' OR '...

还有其他方法可以让它更快并合并所有查询吗?

4 个答案:

答案 0 :(得分:2)

SELECT blub, z FROM xy WHERE blub in ('a','b','c')

答案 1 :(得分:2)

您可以尝试in条款。我不确定它会更快,但肯定会更简洁。例如:

select blub, z from zy where blub in ('this', 'that', 'theother');

explain会告诉您哪种情况最适合您的情况。

答案 2 :(得分:1)

IN中使用WHERE这样的句子:

SELECT blub, z 
FROM xy 
WHERE blub IN ('value1', 'value2', 'value3')

对于哪一个运行得更好/更快,您可以使用查询的查询执行计划。在Sql-server中,单击“包含实际执行计划”。在MySql中,您可以使用EXPLAIN函数。

答案 3 :(得分:1)

您需要添加索引

CREATE TABLE xy ( 
blub VARCHAR(50) NOT NULL, 
z INT UNSIGNED NOT NULL, 
PRIMARY KEY (xy),
KEY (blub,z)
) 

如果您的表已填充,请执行此操作

ALTER TABLE xy ADD INDEX (blub,z);

然后,SELECT blub, z FROM xy WHERE blub in ('a','b','c')会更快