2

我创建了一个表

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

4 回答 4

2
SELECT blub, z FROM xy WHERE blub in ('a','b','c')
于 2012-04-26T21:24:44.813 回答
2

你可以试试一个in子句。我不确定它会更快,但肯定会更简洁。例如:

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

explain会告诉你哪个对你的情况来说实际上是最快的。

于 2012-04-26T21:24:54.667 回答
1

在你的这样使用一个IN子句:WHERE

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

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

于 2012-04-26T21:25:54.487 回答
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')会更快

于 2012-04-26T21:40:28.190 回答