cuốn sách gpt4 ai đã làm

mysql - 长 IN 子句是一种代码味道吗?

In lại Tác giả: Hồ Xil 更新时间:2023-11-01 06:32:30 29 4
mua khóa gpt4 Nike

简单的问题。想知道长 IN 子句是否是一种代码味道?我真的不知道如何证明它。除了我认为的那样,我不知道为什么它会闻起来。

select
name,
code,
capital,
population,
flower,
bird
from us_states
Ở đâu
code in
('NJ', 'NY', 'PA', 'CA', 'AL', 'AK', 'AZ',
'IL', 'IN', 'KY', 'KS', 'DC', 'MD', 'MA')

数据库通常如何实现这样的查找?是否制作并加入了临时表?或者它只是扩展为一系列逻辑或?

感觉应该是join...

我并不是说所有 IN 子句都不好。有时你忍不住。但在某些情况下(尤其是时间越长),您要匹配的元素集实际上来自某个地方。难道不应该加入吗?

是否值得创建(通过应用程序级别)一个临时表,其中包含您要搜索的所有元素,然后对其进行真正的连接?

select u.*
from us_states u

join #chosen_states t
on u.code = t.code

câu trả lời hay nhất

我认为这是一种代码味道。一方面,数据库对 IN 子句中允许的元素数量有限制,如果您的 SQL 是动态生成的,您最终可能会遇到这些限制。

当列表开始变长时,我会转换为使用带有临时表的存储过程,以避免出现任何错误。

我怀疑性能是一个主要问题,IN 子句非常快,因为它们可以短路,这与 NOT IN 子句不同。

关于mysql - 长 IN 子句是一种代码味道吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6219501/

29 4 0
Hồ Xil
Hồ sơ

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá taxi Didi miễn phí
Phiếu giảm giá taxi Didi
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress