我用
创建了一个表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 '...
还有其他方法可以让它更快并合并所有查询吗?
答案 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')
会更快