bitsCN.com
一、逻辑代数基础:
1,数字用二进制表示,所有可能出现的数只有0和1两个。
2,基本运算只有“与”、“或”、“非”三种。
与运算定义为:(用 & 表示与运算)
0 & 0 = 0
0 & 1 = 0
1 & 0 = 0
1 & 1 = 1
可以简单理解为:只要有一个0,结果就是0,和乘法类似。
或运算定义为:(用 | 表示与运算)
0 | 0 = 0
0 | 1 = 1
1 | 0 = 1
1 | 1 = 1
可以简单理解为:只要有一个1,结果就是1,和加法类似。
二、逻辑运算示例:
01111010101010101111111111111111 & 1100000 = 1100000
一般可以理解为:
如果要获取一个数字某N位的数值,只需要将这个数字与2的N-1次方(掩码)进行与运算即可。
三、数据库字段定义:
以数据表 binary_sample为例:
create table binary_sample(
uid int unsigned not null,
status int unsigned not null default 0,
primary key(uid),
key i_s(status)
)engine=innodb;
status字段定义:
status字段数据类型为32bit的整数,为了尽可能的存储多个属性,我们将其进行如下定义:
以下所有“位”的描述顺序按照从低到高(从右到左)顺序表示。
0-2位表示用户注册状态:
000 表示新注册未被批准
001 表示注册被批准
010 表示位高级用户
011 表示管理员
100 表示超级管理员
101 保留
110 保留
111 掩码
3-5位用户性别:
000 表示性别不确定
001 表示性别为男
010 表示性别为女
011 保留
100 保留
101 保留
110 保留
111 掩码
如果我们要查询所有 男用户 则:
select * from binary_sample where status & b'111000' = b'001000';
如果我们要查询所有 管理员用户 则:
select * from binary_sample where status & b'111' = b'011';
如果我们要查询所有 男管理员用户 则:
select * from binary_sample where status & b'111111' = b'001011';
如果我们要查询所有 非 新注册未被批准用户 则:
select * from binary_sample where status & b'111' != b'000';
四,使用PHP程序进行此类计算:
define("USER_NEW",0);//000
define("USER_NORMAL",1);//001
define("USER_ADVANCE",2);//010
define("USER_MANAGE",3);//011
define("USER_SUPER",4);//100
define("USER_MASK",7);//111
define("GENDER_UNKNOWN",0);// 000000
define("GENDER_MALE",8);// 001000
define("GENDER_FEMALE",9);// 010000
define("GENDER_MASK",56);// 111000
如果我们要查询所有 男用户 则:
$status=GENDER_MALE;
$mask=GENDER_MASK;
$sql="select * from binary_sample where status & ${mask}' = ${status}";
如果我们要查询所有 管理员用户 则:
$status=USER_MANAGE;
$mask=USER_MASK;
$sql="select * from binary_sample where status & ${mask}' = ${status}";
如果我们要查询所有 男管理员用户 则:
$status=GENDER_MALE & USER_MANAGE;
$mask = GENDER_MASK & GENDER_MASK;
$sql="select * from binary_sample where status & ${mask}' = ${status}";
如果我们要查询所有 非 新注册未被批准用户 则:
$status = USER_NEW;
$mask = USER_MASK;
$sql="select * from binary_sample where status & ${mask} != ${status}";
依此类推,只要定义好每个值的含义,查询基本上就定了。
bitsCN.com
mysql'sblobissuitable forstoringbinarydatawithinarationaldatabase、whileenosqloptionslikemongodb、redis、andcassandraofferferulesions forunstructureddata.blobissimplerbutcanslowdowdowd withwithdata

toaddauserinmysql、使用:createuser'username '@' host'identifidedby'password '; here'showtodoitsely:1)chosehostcarefilytoconを選択しますTrolaccess.2)setResourcelimitslikemax_queries_per_hour.3)usestrong、uniquasswords.4)endforcessl/tlsconnectionswith

toavoidcommonMonmistakeswithStringDatatypesinmysql、undultingStringTypenuste、choosetherightType、andManageEncodingandCollationsEttingtingive.1)Usecharforfixed-LengthStrings、Varcharforaible Length、AndText/Blobforlardata.2)setCurrectCherts

mysqloffersechar、varchar、Text、anddenumforstringdata.usecharforfixed-lengthstrings、varcharerforvariable-length、text forlarger text、andenumforenforcingdataantegritywithaetofvalues。

MySQLBlob要求の最適化は、次の戦略を通じて実行できます。1。ブロブクエリの頻度を減らす、独立した要求の使用、または読み込みの遅延。 2。適切なブロブタイプ(TinyBlobなど)を選択します。 3。ブロブデータを別々のテーブルに分離します。 4.アプリケーションレイヤーでBLOBデータを圧縮します。 5.ブロブメタデータをインデックスします。これらの方法は、実際のアプリケーションでの監視、キャッシュ、データシェルディングを組み合わせることにより、パフォーマンスを効果的に改善できます。

MySQLユーザーを追加する方法を習得することは、データベース管理者と開発者にとって重要です。これは、データベースのセキュリティとアクセス制御を保証するためです。 1)CreateUserコマンドを使用して新しいユーザーを作成し、2)付与コマンドを介してアクセス許可を割り当て、3)FlushPrivilegesを使用してアクセス許可を有効にすることを確認します。

choosecharforfixed-lengthdata、varcharforvariable-lengthdata、andtextforlargetextfields.1)chariseffienceforconsistent-lengthdatalikecodes.2)varcharsuitsvariaible-lengthdatalikenames、balancingflexibilityandperformance.3)Textisidealforforforforforforforforforforforidex

MySQLの文字列データ型とインデックスを処理するためのベストプラクティスには、次のものが含まれます。1)固定長のchar、可変長さのvarchar、大規模なテキストのテキストなどの適切な文字列タイプを選択します。 2)インデックス作成に慎重になり、インデックスを避け、一般的なクエリのインデックスを作成します。 3)プレフィックスインデックスとフルテキストインデックスを使用して、長い文字列検索を最適化します。 4)インデックスを定期的に監視および最適化して、インデックスを小さく効率的に保つ。これらの方法により、読み取りと書き込みのパフォーマンスをバランスさせ、データベースの効率を改善できます。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

EditPlus 中国語クラック版
サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

PhpStorm Mac バージョン
最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

SublimeText3 Linux 新バージョン
SublimeText3 Linux 最新バージョン

WebStorm Mac版
便利なJavaScript開発ツール

ZendStudio 13.5.1 Mac
強力な PHP 統合開発環境
