sql >> データベース >  >> RDS >> Mysql

MySQLデータベースから同様のアイテムをプルするための最良の方法

    myisamテーブルの場合、自然言語全文検索を使用できます: http://dev.mysql.com/doc/refman/5.5/en/fulltext-natural-language.html

    SELECT * FROM article a
    LEFT JOIN articletag at ON (at.articleid = a.articleid)
    LEFT JOIN tag t ON (at.tagid = t.tagid)
    WHERE MATCH (a.title) AGAINST ('some title' IN NATURAL LANGUAGE MODE)
    OR MATCH (t.tagtext) AGAINST ('some tag' IN NATURAL LANGUAGE MODE)
    GROUP BY a.articleid # if you don't want get duplicates 
    

    タグに関する冗長な情報を1つのフィールドに追加することも考えられます(例:<taga><tagb><tagz> )記事テーブルで、タグが追加/削除されるたびに更新します。これによりクエリが簡素化され、より高速になります:

    SELECT * FROM article a
    WHERE MATCH (a.title, a.tagtext) AGAINST ('some title or tag' IN NATURAL LANGUAGE MODE)
    



    1. order by句が使用されていない場合、OracleSQLは任意の方法で行を返します

    2. 先頭に埋め込みゼロが付いたSQLID

    3. node-postgresを使用してpostgresにファイルを保存する

    4. 高度な合計集計フィールド