character-slice-index

Downloads3
Subscribe
3
Bookmark
0
This application is not supported by InterSystems Corporation. Please be notified that you use it at your own responsibility.
Details
Releases
Reviews
Issues
Articles

What's new in this version

Initial Release

Quality Gate Status

Prerequisites

Make sure you have git and Docker desktop installed.

Installation

Clone/git pull the repo into any local directory

git clone https://github.com/rcemper/character-slice-index.git

Run the IRIS container with your project:

docker-compose up -d --build

How to Test it

docker-compose exec iris iris session iris

There is a populate procedure that you can run from SQL Shell
The reply is the last ID generated
The default line size is 37 char.
You can change it by passing some different size

  • USER>do $system.SQL.Shell()
  • [SQL]USER>>select rcc_slice.pop()
    38
  • [SQL]USER>>select rcc_slice.pop(15)
    130
  • [SQL]USER>>select rcc_slice.pop(50)
    158
  • [SQL]USER>>select documentid,count(*) lines from rcc_slice.data group by documentid
    documentid lines
    28 28
    43 92
    62 38

Next we look for lines containing ol
Classic approach:

  • [SQL]USER>>
    SELECT ID, documentid, line, length(line), lineid
    FROM rcc_slice.data WHERE line [ 'ol'
  • 27 Rows(s) Affected
    statement prepare time(s)/globals/cmds/disk: 0.0841s/42,502/225,481/0ms
    execute time(s)/globals/cmds/disk: 0.0010s/ 159 /4,444/0ms
    cached query class: %sqlcq.USER.cls

Character Slice approach:

  • [SQL]USER>>
    SELECT ID, documentid, line, length(line), lineid
    FROM rcc_slice.data WHERE line %CONTAINSTERM ('ol')
  • 27 Rows(s) Affected
    statement prepare time(s)/globals/cmds/disk: 0.0847s/42,849/238,674/0ms
    execute time(s)/globals/cmds/disk: 0.0011s/ 34 /3,900/0ms
    cached query class: %sqlcq.USER.cls8

Even with this small data sample we see only 34 Global Access instead of 159

Now let's look for 2 independent values ol and w
Classic approach:

  • [SQL]USER>>
    SELECT ID, documentid, line, length(line), lineid
    FROM rcc_slice.data WHERE line [ 'ol' and line [ 'w'
  • 4 Rows(s) Affected
    statement prepare time(s)/globals/cmds/disk: 0.0805s/42,670/233,791/0ms
    execute time(s)/globals/cmds/disk: 0.0004s/ 159 /2,340/0ms
    cached query class: %sqlcq.USER.cls9

Character Slice approach:

  • [SQL]USER>>
    SELECT ID, documentid, line, length(line), lineid
    FROM rcc_slice.data WHERE line %CONTAINSTERM ('ol','w')
  • 4 Rows(s) Affected
    statement prepare time(s)/globals/cmds/disk: 0.0901s/43,417/265,856/0ms execute time(s)/globals/cmds/disk: 0.0005s/ 15 / 1,632/0ms
    cached query class: %sqlcq.USER.cls11

It's getting dramatic: less than 10% !
Only 15 instead of 159 Global Access
You are invited to extrapolation of these results

Article in DC

Rating
5 (1)
ObjectScript quality test
Passed
Updated on 05 December 2023
ObjectScript quality report
Category
Technology Example
Works with
InterSystems IRISCachéEnsemble
Tags
Info
Version
0.0.1
Last updated
2023-07-08
Repository
Open
Documentation
Open
License
Link