是否有短路逻辑运算符(特别是短路AND
和短路OR
)我可以用在WHERE
MySQL 5.5 中的子句?如果没有,有什么替代方案?
我的问题的抽象观点以及为什么我需要这个的解释可以在这个小提琴中找到:
http://sqlfiddle.com/#!2/97fd1/3
事实上,我们正在数百个国家的数千个城市的数百万家书店中查看数百万本书,这就是为什么我们不能接受我们发送的每个查询都接收不需要的信息的开销,并且迫切需要找到一种方法来使一旦我们拥有满足当前条件的所有行,评估就会停止,然后再继续下一个 OR。
如果您需要更多信息,请与我们联系。提前致谢。
根据要求,这里是小提琴中使用的模式:
CREATE TABLE quantitycache (
id INT AUTO_INCREMENT,
quantity INT,
book_id INT NOT NULL,
bookstore_id INT NULL,
city_id INT NULL,
country_id INT NULL,
PRIMARY KEY (id)
);
以及一些示例数据:
INSERT INTO quantitycache
(quantity, book_id, bookstore_id, city_id, country_id)
VALUES
(5, 1, 1, NULL, NULL),
(100, 2, 1, NULL, NULL),
(7, 1, 2, NULL, NULL),
(12, 1, NULL, 1, NULL),
(12, 1, NULL, NULL, 1),
(100, 2, NULL, 1, NULL),
(100, 2, NULL, NULL, 1),
(200, 3, NULL, 1, NULL),
(250, 3, NULL, NULL, 1);