MySQL
例如這樣的
select `id` from `table` where left(`flag`,1)=1;
我是有一串名為flag的標識用於表示該商品的各種屬性, 10位元Int, 例如1100000000。
然後比如第一個數字1表示該商品價格區間在100-200元。
然後我想從表中搜出這個flag中取出第一個數字為1的商品
這個可以實現麼, 僅僅用mysql
回複討論(解決方案)
select `id` from `table` where left(`flag`,1)='1'
你的sql不就是嗎??
暈。。。我感覺像是這樣寫的, 我試了幾次沒成功
是我where條件寫錯了
另外我想問下, 這樣的sql語句效能怎麼樣呢
select `id` from `table` where left(`flag`,1)='1'
我想問下, 這樣的sql語句效能怎麼樣呢
效能應該不怎麼樣 用到函數了
效能就不怎樣了,因為不能使用索引寫作這樣才可以使用索引(如果有的話)select `id` from `table` where `flag` like '1%'
你這是要做商品篩選吧 用你這個方法你有沒有想過以後要是增加屬性 你以前的資料怎麼辦
效能就不怎樣了,因為不能使用索引寫作這樣才可以使用索引(如果有的話)select `id` from `table` where `flag` like '1%'
是給flag欄位加索引麼, like的效率比left還高啊?
你這是要做商品篩選吧 用你這個方法你有沒有想過以後要是增加屬性 你以前的資料怎麼辦
我是在想比如商品有10個屬性吧, 我flag欄位中每個屬性對應一個數字, 我現在只用到了前兩個, 後邊的我自動補0, 以後用到了再賦值。 您有什麼更好的做分類的方法麼
建一個屬性工作表 aid 屬性
一個商品表 gid
一個對應表 aid gid 對應邊裡aid 和gid 都可以索引 擴充屬性的時候只要編輯屬性工作表就可以了
只要 like 的匹配串左端不是變數,那麼就可以使用到索引對於 1,2,11 所以後是 1,11,2like '1%' 總是會快速取出 1,11 的,因為他們聚集在一起