簡體   English   中英

優化大型SQL查詢的方法

[英]Way to optimize huge SQL Query

我有一個很長的查詢,如果列 id_cat 與用戶搜索匹配,它會返回一些記錄。

它看起來像這樣:

SELECT * 
  FROM table 
 WHERE (id_cat = 50 OR id_cat = 51 OR id_cat = 52...) up to some high numbers.

在上述情況下,查詢變得非常大,這增加了響應時間。

我需要優化它,因為響應時間接近 15 秒(基本上它搜索所有類別)。

我該怎么做?

首先,我正在考慮構建如下查詢:

SELECT * FROM table WHERE (id_cat = (50 OR = 51 OR = 52))

這應該減少 sql 單詞的數量,但它不會像這樣工作(返回 null 而不是行)。 我沒有更多的想法。

你對如何處理有什么建議嗎?

首先,使用in構建查詢:

SELECT *
FROM table 
WHERE id_cat IN (50, 51, 52, . . .);

MySQL 使用常量值優化IN 沒有索引,仍然有全表掃描。 所以,我還推薦table(id_cat)上的索引。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM