インターセプトされた文字列を SQL ステートメントの where 条件として直接使用できますか?

WBOY
リリース: 2016-06-23 14:17:28
オリジナル
1880 人が閲覧しました

MySQL

たとえば、
select `id` from `table` where left(`flag`,1)=1;


製品のさまざまな属性を表すために使用される識別子の文字列があります。数字の Int (1100000000 など)。
たとえば、最初の数字 1 は、製品の価格帯が 100 ~ 200 元であることを示します。
次に、このフラグの最初の番号 1 を持つ製品をテーブルから検索したいです
これは mysql を使用するだけで実現できますか

ディスカッションに返信 (解決策)

select `id` from `table` where left(`flag`,1)='1'

それはあなたの SQL ではありませんか? ?

めまいがする。 。 。このように書かれているのですが、何度か試してもうまくいきませんでした

また、このような 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%'
ログイン後にコピー
ログイン後にコピー

フラグにインデックスを追加していますか?フィールドの方が左より効率的ですか?

あなたの方法を使用して、将来属性を追加する場合に以前のデータをどうするかを考えたことはありますか?
たとえば、商品には 10 個の属性があり、それぞれの属性が私のフラグフィールドはA番号に対応しており、現在は最初の2つだけを使用し、後続のものには自動的に0を入力し、将来使用するときに値を割り当てます。もっと良い分類方法はありますか?

属性テーブル「aid」属性を作成します。

製品テーブル「gid」
対応するテーブル「aid」 gid 属性を拡張するときに、aid と gid の両方をインデックス化できます。 、属性テーブルを編集するだけです

只要 like 的匹配串左端不是变数,那么就可以使用到索引对于 1,2,11 所以后是 1,11,2like '1%' 总是会快速取出 1,11 的,因为他们聚集在一起
ログイン後にコピー

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!