如何優化資料庫中逗號分隔列的查詢?

Patricia Arquette
發布: 2024-10-30 15:03:03
原創
158 人瀏覽過

How to Optimize Queries for Comma-Separated Columns in Databases?

最佳化逗號分隔列的查詢

資料庫表通常包含具有逗號分隔值清單的列,這在查詢特定值時帶來了挑戰價值觀。考慮一個具有以下格式的「CATEGORIES」欄位的資料表:

ID | CATEGORIES
---------------
1  | c1
2  | c2,c3
3  | c3,c2
4  | c3
5  | c4,c8,c5,c100
登入後複製

要搜尋特定類別,您最初可以選擇LIKE 語句:

SELECT id FROM table WHERE categories LIKE '%c2%'; -- Returns rows 2 and 3
登入後複製

但是,LIKE 語句對於逗號分隔的列可能效率低。 Oracle 的 FIND_IN_SET() 函數似乎是一個合適的替代方案,但它在 Oracle 10g 中不可用。

更好的方法是使用具有適當通配符的 LIKE:

SELECT 
  * 
FROM
  YourTable 
WHERE 
  ',' || CommaSeparatedValueColumn || ',' LIKE '%,SearchValue,%'
登入後複製

此查詢在搜尋值周圍添加逗號以確保精確匹配。但是,由於使用了 LIKE,它仍然會很慢。

更好的解決方案是將資料重組為具有交叉連結的單獨表,以避免逗號分隔列的限制,從而顯著提高查詢效能。

以上是如何優化資料庫中逗號分隔列的查詢?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!